[转]Activity详解 Intent显式跳转和隐式跳转

Activity 生命周期

显式 Intent 调用

1     //创建一个显式的 Intent 对象(方法一:在构造函数中指定)

2      Intent intent = new Intent(Intent_Demo1.this, Intent_Demo1_Result1.class);

3

4      Bundle bundle = new Bundle();

5      bundle.putString("id", strID);

6      intent.putExtras(bundle);

7

8      intent.putExtra("name", "bbb");

9      intent.putExtra("userInfo", new UserInfo(1, "name"));

10      startActivity(intent);

11

12      //创建一个显式的 Intent 对象(方法二:用 setClass 方法)

13      Intent intent = new Intent();

14      Bundle bundle = new Bundle();

15      bundle.putString("id", strID);

16      intent.setClass(Intent_Demo1.this, Intent_Demo1_Result1.class);

17      intent.putExtras(bundle);

18      startActivity(intent);

19

20      //创建一个显式的 Intent 对象(方法三:用 setClass 方法)

21      Intent intent = new Intent();

22      Bundle bundle = new Bundle();

23      bundle.putString("id", strID);

24      intent.setClassName(Intent_Demo1.this, "com.great.activity_intent.Intent_Demo1_Result1");

25      intent.putExtras(bundle);

26      startActivity(intent);

27

28      //创建一个显式的 Intent 对象(方法四:用 setComponent 方法)

29      Intent intent = new Intent();

30      Bundle bundle = new Bundle();

31      bundle.putString("id", strID);

32      //setComponent方法的参数:ComponentName

33      intent.setComponent(new ComponentName(Intent_Demo1.this, Intent_Demo1_Result1.class));

34      intent.putExtras(bundle);

35      startActivity(intent);

Intent隐式跳转 Action

1     //创建一个隐式的 Intent 对象:Action 动作

2     /**

3      * 这里指定的是 AndroidManifest.xml 文件中配置的

4      * <intent-filter>标签中的<action android:name="com.great.activity_intent.Intent_Demo1_Result3" />

5      * 所在的 Activity,注意这里都要设置 <category android:name="android.intent.category.DEFAULT" />

6      */

7     Intent intent = new Intent();

8     //设置 Intent 的动作

9     intent.setAction("com.great.activity_intent.Intent_Demo1_Result3");

10     Bundle bundle = new Bundle();

11     bundle.putString("id", strID);

12     intent.putExtras(bundle);

13     startActivity(intent);

AndroidManifest.xml

1    <activity android:name="Intent_Demo1_Result3"

2                   android:label="Intent_Demo1_Result3">

3             <intent-filter>

4                 <action android:name="com.great.activity_intent.Intent_Demo1_Result3" />

5                 <category android:name="android.intent.category.DEFAULT" />

6             </intent-filter>

7         </activity>

Category 类别

1 //创建一个隐式的 Intent 对象:Category 类别

2 Intent intent = new Intent();

3 intent.setAction("com.great.activity_intent.Intent_Demo1_Result33");

4 /**

5  * 不指定 Category 或 只指定 AndroidManifest.xml 文件中 <intent-filter> 标签中配置的任意一个 Category

6  * <category android:name="android.intent.category.DEFAULT" /> 除外,就可以访问该 Activity,

7  */

8 intent.addCategory(Intent.CATEGORY_INFO);

9 intent.addCategory(Intent.CATEGORY_DEFAULT);

10 Bundle bundle = new Bundle();

11 bundle.putString("id", strID);

12 intent.putExtras(bundle);

13 startActivity(intent);

AndroidManifest.xml

<activity android:name="Intent_Demo1_Result2"

android:label="Intent_Demo1_Result2">

<intent-filter>

<category android:name="android.intent.category.INFO" />

<category android:name="android.intent.category.BROWSABLE" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

Date 数据 跳转

1 //创建一个隐式的 Intent 对象,方法四:Date 数据

2 Intent intent = new Intent();

3 Uri uri = Uri.parse("http://www.great.org:8080/folder/subfolder/etc/abc.pdf");

4

5 //注:setData、setDataAndType、setType 这三种方法只能单独使用,不可共用

6 //要么单独以 setData 方法设置 URI

7 //intent.setData(uri);

8 //要么单独以 setDataAndType 方法设置 URI 及 mime type

9 intent.setDataAndType(uri, "text/plain");

10 //要么单独以 setDataAndType 方法设置 Type

11 //intent.setType("text/plain");

12

13 /**

14  * 不指定 Category 或 只指定 AndroidManifest.xml 文件中 <intent-filter> 标签中配置的任意一个 Category

15  * <category android:name="android.intent.category.DEFAULT" /> 除外,就可以访问该 Activity

16  */

17 Bundle bundle = new Bundle();

18 bundle.putString("id", strID);

19 intent.putExtras(bundle);

20 startActivity(intent);

AndroidManifest.xml

1         <activity android:name="Intent_Demo1_Result2"

2                   android:label="Intent_Demo1_Result2">

3             <intent-filter>

4                 <category android:name="android.intent.category.DEFAULT" />

5                 <data

6                     android:scheme="http"

7                     android:host="www.great.org"

8                     android:port="8080"

9                     android:pathPattern=".*pdf"

10                     android:mimeType="text/plain"/>

11             </intent-filter>

12         </activity>

13

调用系统的的组件

//web浏览器

Uri uri= Uri.parse("http://www.baidu.com:8080/image/a.jpg");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

//地图(要在 Android 手机上才能测试)

Uri uri = Uri.parse("geo:38.899533,-77.036476");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

//路径规划

Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");

Intent it = new Intent(Intent.ACTION_VIEW, uri);

startActivity(it);

//拨打电话-调用拨号程序

Uri uri = Uri.parse("tel:15980665805");

Intent intent = new Intent(Intent.ACTION_DIAL, uri);

startActivity(intent);

//拨打电话-直接拨打电话

//要使用这个必须在配置文件中加入<uses-permission android:name="android.permission.CALL_PHONE"/>

Uri uri = Uri.parse("tel:15980665805");

Intent intent = new Intent(Intent.ACTION_CALL, uri);

startActivity(intent);

//调用发送短信程序(方法一)

Uri uri = Uri.parse("smsto:15980665805");

Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

intent.putExtra("sms_body", "The SMS text");

startActivity(intent);

//调用发送短信程序(方法二)

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.putExtra("sms_body", "The SMS text");

intent.setType("vnd.android-dir/mms-sms");

startActivity(intent);

//发送彩信

Uri uri = Uri.parse("content://media/external/images/media/23");

Intent intent = new Intent(Intent.ACTION_SEND);

intent.putExtra("sms_body", "some text");

intent.putExtra(Intent.EXTRA_STREAM, uri);

intent.setType("image/png");

startActivity(intent);

//发送Email(方法一)(要在 Android 手机上才能测试)

Uri uri = Uri.parse("mailto:[email protected]");

Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

startActivity(intent);

//发送Email(方法二)(要在 Android 手机上才能测试)

Intent intent = new Intent(Intent.ACTION_SENDTO);

intent.setData(Uri.parse("mailto:[email protected]"));

intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");

intent.putExtra(Intent.EXTRA_TEXT, "这是内容");

startActivity(intent);

//发送Email(方法三)(要在 Android 手机上才能测试)

Intent intent = new Intent(Intent.ACTION_SEND);

intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]");

intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");

intent.putExtra(Intent.EXTRA_TEXT, "这是内容");

intent.setType("text/plain");

//选择一个邮件客户端

startActivity(Intent.createChooser(intent, "Choose Email Client"));

//发送Email(方法四)(要在 Android 手机上才能测试)

Intent intent = new Intent(Intent.ACTION_SEND);

//收件人

String[] tos = {"[email protected]", "[email protected]"};

//抄送人

String[] ccs = {"[email protected]", "[email protected]"};

//密送人

String[] bcc = {"[email protected]", "[email protected]"};

intent.putExtra(Intent.EXTRA_EMAIL, tos);

intent.putExtra(Intent.EXTRA_CC, ccs);

intent.putExtra(Intent.EXTRA_BCC, bcc);

intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");

intent.putExtra(Intent.EXTRA_TEXT, "这是内容");

intent.setType("message/rfc822");

startActivity(Intent.createChooser(intent, "Choose Email Client"));

//发送Email且发送附件(要在 Android 手机上才能测试)

Intent intent = new Intent(Intent.ACTION_SEND);

intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");

intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mp3/醉红颜.mp3");

intent.setType("audio/mp3");

startActivity(Intent.createChooser(intent, "Choose Email Client"));

//播放媒体文件(android 对中文名的文件支持不好)

Intent intent = new Intent(Intent.ACTION_VIEW);

//Uri uri = Uri.parse("file:///sdcard/zhy.mp3");

Uri uri = Uri.parse("file:///sdcard/a.mp3");

intent.setDataAndType(uri, "audio/mp3");

startActivity(intent);

Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

//音乐选择器

//它使用了Intent.ACTION_GET_CONTENT 和 MIME 类型来查找支持 audio/* 的所有 Data Picker,允许用户选择其中之一

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.setType("audio/*");

//Intent.createChooser:应用选择器,这个方法创建一个 ACTION_CHOOSER Intent

startActivity(Intent.createChooser(intent, "选择音乐"));

Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT);

intent1.setType("audio/*");

Intent intent2 = new Intent(Intent.ACTION_CHOOSER);

intent2.putExtra(Intent.EXTRA_INTENT, intent1);

intent2.putExtra(Intent.EXTRA_TITLE, "aaaa");

startActivity(intent2);

//                //设置壁纸

//                Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);

//                startActivity(Intent.createChooser(intent, "设置壁纸"));

//卸载APK

//fromParts方法

//参数1:URI 的 scheme

//参数2:包路径

//参数3:

Uri uri = Uri.fromParts("package", "com.great.activity_intent", null);

Intent intent = new Intent(Intent.ACTION_DELETE, uri);

startActivity(intent);

//安装APK(???)

Uri uri = Uri.fromParts("package", "com.great.activity_intent", null);

Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);

startActivity(intent);

//调用搜索

Intent intent = new Intent();

intent.setAction(Intent.ACTION_WEB_SEARCH);

intent.putExtra(SearchManager.QUERY, "android");

startActivity(intent);

时间: 2024-10-31 22:28:41

[转]Activity详解 Intent显式跳转和隐式跳转的相关文章

Android四大组件--Activity详解

Android四大组件--Activity详解 分类: android android应用android开发 本文的主要内容包括1.activity的建立.配置和使用:2.activity的跳转和传值:3.startActivityForResult:4.activity的生命周期. 1.activity的建立.配置和使用 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供一个可视的窗口,一般情况

Xamarin android 之Activity详解

序言: 上篇大概的讲解了新建一个android的流程.今天为大家带来的是Activity详解,因为自己在开发过程中就遇到 好几次坑,尴尬. 生命周期 和Java里头一样一样的,如图 图片来源于网上哈,自己画不来. 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行. 3.当前Ac

Android开发四大组件--Activity详解

Android开发四大组件--Activity详解 - Android开发教程 Android开发的四大组件在开发中应用中是必不可少的,下面就来详解下四大组件之一Activity,总结自网络.Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()——>onStart()——>onResume() 当另一个Activity启动时: 第一个Activity onPause()——>第二个Activity onCreate()——>

[安卓基础] 009.组件Activity详解

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

Android四大组件之Activity详解 &middot; yclog

Activity生命周期: onCreate:在Acitivty第一次创建时调用,用于做初始化的工作onStart:onCreate调用后调用,此次界面对用户来说无法看见onResume:此次界面可见并显示到前台,且当前Acitvity位于当前栈顶,并且处于运行状态onPause:表示当前Activity正在停止,常做一些存储数据.停止动画等工作(不做耗时操作)onStop:表示当前Activity即将停止,一般做微量级的回收工作onDestory:表示当前Activity即将被销毁,可做一些回

C++中构造函数详解及显式调用构造函数

C++构造函数详解及显式调用构造函数 c++类的构造函数详解                        一. 构造函数是干什么的class Counter{public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类型         Counter()         {                m_value = 0;         }private:          // 数据成员         int m_val

Android Activity的跳转:普通跳转(显式跳转,隐式跳转)和传值跳转

Android Activity的跳转 1.普通跳转 @显式跳转 startActivity(new Instent(Activity.this,Activity2.class)); 注意:a--->b--->a(a跳转到b,按下back,回到a) 从一个Activity1跳转到另个Activity2,再由这个Activity2返回前面的Activity1,Activity的所执行的方法为:onCreate(a)---onStart(a)---onResume(a)---onPause(a)-

Activity的显式跳转和隐式挑战

安卓中Activity的跳转几乎是每一个APP都会用到的技术点.而且他的使用时十分简单的. 这里我们先说一下主要的技术要点: 1.在清单文件中注册新的Activity 2.通过意图跳转 这里我们看一下部分清单文件 注意,有配置红框的一般就是我们的主Activity,也就是程序的主入口.如果同时配置了两个主入口,则会生成两个快捷图标.一般我们不会这样使用. 好了,下面直接看代码吧. 清单文件 <?xml version="1.0" encoding="utf-8"

Android笔记(七十四) 详解Intent

我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳只是Intent功能的九牛一毛,现在对Intent功能做一个总结,以作备忘. 我们经常使用如下方法实现一个转跳: Intent intent = new Inent(MainActivity.this,SecondActivity.class); startActivity(intent); 其实这