1 同application调用
<intent-filter>
<action android:name="动作名字(随便设置)" />
<category android:name="android.intent.category.DEFAULT" /> (这个必须得设置,否者会找不到,note A)
</intent-filter>
A:
“Android treats all implicit intents passed to startActivity() as if they contained at least one category: "android.intent.category.DEFAULT" (the CATEGORY_DEFAULT constant). Therefore, activities that are willing to receive implicit intents must include "android.intent.category.DEFAULT" in their intent filters”
每一个通过 startActivity() 方法发出的隐式 Intent 都至少有一个 category,就是 "android.intent.category.DEFAULT",所以只要是想接收一个隐式 Intent 的 Activity 都应该包括 "android.intent.category.DEFAULT" category,不然将导致 Intent 匹配失败。
//不用隐式调用,下面两种方式都可以
intent.setClassName("com.aizheke.aizheked", bundle.getString("activity"));
intent.setComponent(new ComponentName("com.aizheke.aizheked", bundle.getString("activity")));
2 不同application调用
如果知道具体的包名,类名,那么可以直接调用
Intent intent = new Intent();
intent.setClassName("com.asfman", "com.asfman.ActivityB");
startActivity(intent);
如果知道action name那么可以通过
Intent intent = new Intent();
intent.setAction("动作名字(随便设置)" );
startActivity(intent);
如果有设置category那么必须intent.setCategory("类别名字")。如果设置了<category android:name="android.intent.category.DEFAULT" /> ,那么可以不用intent.setCategory,系统会默认调用
posted on 2011-06-17 11:27
汪杰 阅读(380)
评论(2) 编辑 收藏 引用 所属分类:
Java