如何启动另外一个应用的任意Activity
在一个Android应用程序A中调用另一个Android程序B,同时传递数据给B
ComponentName componentName = new ComponentName(
“com.xiaohua.player.activity“,
“com.xiaohua.player.activity.PlayerActivity“);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString(“resUrl“, resurl);
bundle.putSerializable(“picUrlList“, picurllist);
intent.putExtras(bundle);
intent.setComponent(componentName);
startActivity(intent);
注:
com.xiaohua.player.activity:包路径
PlayerActivity:Activity类
resUrl :String类型
picUrlList:数组,也可以是对象
应用程序安装后,按以上方式可进行调用.
接受activity:
public void getParameterByIntent() {
Intent mIntent = this.getIntent();
String resUrl = mIntent.getStringExtra(“resUrl“);
String picUrlList = (String) mIntent.getSerializableExtra(“picUrlList“);
if (null != picUrlList) {
int count = picUrlList.length;
for (int i = 0; i 《 count; i++) {
Log.e(“tag“, “picUrlList[“ + i + “]“ + picUrlList[i]);
}
}
}
intent的以下哪个属性通常用于在多个action之间进行数据交换
Intent的属性及intent-filter配置:
1、Component属性:
Intent的Component属性需要接受一个ComponentName对象,包含如下几个构造器,通过显示Intent启动一个Activity:
当程序通过Intent的Component属性启动特定组件时,被启动组件几乎不需要用《intent-filter….》元素进行配置
2、Action与Category属性与intent-filter配置
Action与Category属性都是一个普通的字符串,其中Action表示Intent所要完成的一个抽象”动作“,而Category则用于为Action添加额外的附加类别信息。通常Action和Category结合使用。
Action完成的只是一个抽象”动作“,这个动作具体由哪个组件来完成,Action这个字符串本身并不管。这取决于Activity的配置,只要有某个Activity配置文件符合,该Activity就可能被启动。如果有多个Activity都符合,则会弹出对话框供用户选择。
Action和Category在Intent中的配置:
注意:一个Intent对象只能有一个Action属性,但一个Intent可以有多个Category属性。且Cateory的默认值为intent.category.DEFAULT常量。Cateory的值可以不指定,就为默认值。
在Activity的Manifest.xml文件中的配置:
3、Data、Type属性与intent-filter配置
Data属性通常用于向Action属性提供操作的数据。Data接受一个Uri对象,Uri对象的格式如下:
Type属性用于指定该Data所指定Uri对应的MIME类型,这种MIME类型只要满足abd/xyz格式的字符串即可。
Data与Type的关系:
1)、如果Intent先设定Data的值,后设置Type的值,那么Type就会覆盖Data属性。
2)、如果Intent先设定Type的值,后设置Data的值,那么Data就会覆盖Type属性。
如果希望同时设定Data和Type的值,就应该调用Intent的setDataAndType()方法。
在Intent中设置Data和Type属性:
在配置文件中设置(都通过《data …/》设置):
4、 Extra属性
Extra属性通常用于在多个Action之间进行数据交换,Intent的Extra属性值应该是一个Bundle对象,它可以存入多个键值对,这样就可以在多个Activity之间进行数据交换了。
5、Flag属性
Intent的Flag属性用于为该Intent添加一些额外的控制旗标,可调用addFlags()方法来为Intent添加控件旗标。