Activity启动另一个Activity的方式总结
来源:互联网 发布:淘宝店铺音乐代码 编辑:程序博客网 时间:2024/05/27 01:17
下面两种方式均采用这个menifests.xml布局,且下面两种方式属于显性方式{即通过使用(MainActivity.this, xxxx.class)};
一,用intent构造器进行启动:
二,用Component属性:
下面的方法是隐性方法即没有明确的指明(MainActivity.this, xxxx.class);
三,用Action和Category属性:
采用这个布局:
采用的Java:
使用action+category属性时,需要在代码中设置setAction和addCategory两个函数,但是如果布局中使用了属性为
<category android:name="android.intent.category.DEFAULT" />的话可以只使用setAction,因为系统默认使用addCategory为以上属性的设置;
如上代码只使用了
intent.setAction(MainActivity.SNOW_ACTION);没有设置addCategory();
需要注意的是如果不是采用系统的category的话,需要自己设置添加这样的布局和代码
<category android:name="snow_wind.test.intent.category.SNOW_CATEGORY" />并在代码中设置
public final static String SNOW_CATEGORY ="snow_wind.test.intent.action.SNOW_CATEGORY";
intent.addCategory(SNOW_CATEGORY);从上面的分析可以总结如下:
category和action其实就是两个字符串值,只要在intent中指明了这两个属性,Activity的manifests注册布局中如果包含了这两个属性,这个Activity就会被启动;
如果<activity......>包含了多个<action xxxx/>和多个<category xxxxxxx/>的话,且intent的设置属性包含<activity.....>中任意一组action和category的话,Activity就会响应;
这样的Activity可以响应多个intent;
四,用Action和Type属性
通过setAction和setType也可以启动一个Activity
这里的代码取之一个用与启动系统Action所对应的Activity(系统给出很多action可通过API GUIDES中的intent
and intent filter项来查找)因为启动的是系统Activity所以manifests文件中不会注册<activity......>和<action xxx/>的;
// 设置Intent的Action属性intent.setAction(Intent.ACTION_GET_CONTENT);// 设置Intent的Type属性intent.setType("vnd.android.cursor.item/phone");五,用Data属性启动Activity或用Data+Type属性启动Activity
使用data属性启动Activity需要在manifests中加入
<intent-filter> <action android:name="xx"/> <category android:name="android.intent.category.DEFAULT" /> <!-- 需要Intent的Data属性的scheme是lee,且host是www.fkjava.org port是8888,且path是/mypath 且type是abc/xyz,才可启动该Activity --> <data android:scheme="lee" android:host="www.fkjava.org" android:port="8888" android:path="/mypath" android:mimeType="abc/xyz"/></intent-filter>data的属性如上所示,其中mimeType属于Type的属性,二者均放在<data...../>中进行定义;
在代码中只要加入
Intent intent = new Intent(); // 同时设置Intent的Data、Type属性 intent.setDataAndType(Uri.parse("lee://www.fkjava.org:8888/mypath") , "abc/xyz"); startActivity(intent);
即可;(这里使用data+type属性);
如果仅使用data属性的话可以这样:
A:
<data android:scheme="lee" />
intent.setData(Uri.parse("lee://www.crazyit.org:1234/test"));
B:
<data android:scheme="lee" android:host="www.fkjava.org" android:port="8888" />
intent.setData(Uri.parse("lee://www.fkjava.org:8888/test"));c:
<data android:scheme="lee" android:host="www.fkjava.org" android:path="/mypath" />
intent.setData(Uri.parse("lee://www.fkjava.org:1234/mypath"));D:
<data android:scheme="lee" android:host="www.fkjava.org" android:port="8888" android:path="/mypath"/>
intent.setData(Uri.parse("lee://www.fkjava.org:8888/mypath"));E:
<data android:scheme="lee" android:host="www.fkjava.org" />
intent.setData(Uri.parse("lee://www.fkjava.org:8888/test"));liiu
六,使用Action+Data属性
在manifests中不需要写入任何属性,只是传入数据data和使用Action调用系统Activity;(调用系统编辑Activity)
Intent intent = new Intent();// 为Intent设置Action属性(动作为:编辑)intent.setAction(Intent.ACTION_EDIT);String data = "content://com.android.contacts/contacts/1";// 根据指定字符串解析出Uri对象Uri uri = Uri.parse(data);// 设置Data属性intent.setData(uri);startActivity(intent);调用打开网站的默认浏览器启动的Activity;
Intent intent = new Intent();String data = "http://www.crazyit.org";// 根据指定字符串解析出Uri对象Uri uri = Uri.parse(data);// 为Intent设置Action属性intent.setAction(Intent.ACTION_VIEW);// 设置Data属性intent.setData(uri);startActivity(intent);调用系统拨号应用,并给出电话号码;
Intent intent = new Intent();// 为Intent设置Action属性(动作为:拨号)intent.setAction(Intent.ACTION_DIAL);String data = "tel:13800138000";// 根据指定字符串解析出Uri对象Uri uri = Uri.parse(data);// 设置Data属性intent.setData(uri);startActivity(intent);以上启动的都是系统的应用程序,用它们来完成data所传入的数据;
- Activity启动另一个Activity的方式总结
- 启动另一个Activity的方式
- Activity启动另一个Activity的方式
- 启动另一个应用程序中的Activity的方式总结
- activity的启动方式及其参数总结
- Activity启动方式的总结(1)
- Activity启动方式的总结(2)
- Activity启动方式的总结(3)
- Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- MainActivity启动另一个Activity
- 1.4 启动另一个activity
- Training--启动另一个Activity
- 启动另一个Activity
- 启动另一个Activity
- 启动另一个 Activity
- HDU5740 Glorious Brilliance
- 【redux】Action Reducer Store
- Linux入门笔记——系统目录结构
- Android Studio
- 解决ActionBar字体设置
- Activity启动另一个Activity的方式总结
- 关于javascript中=的返回值
- S5PV210——内存配置(DDR2)
- C/C++ 八大排序算法
- 从数组中计算出每个数的个数
- 【Redux】数据生命周期
- tomcat中java.lang.OutOfMemoryError: Java heap space异常处理
- python2.7安装requests包
- 效率