我正在开发一个库。我希望使用我的库的应用程序应该能够使用我的自定义操作通过隐式意图启动我的主要活动。但是自定义意图不起作用。它表示"没有找到通过行动处理意图的活动='我的自定义操作'"。以下是我的代码:
Intent intent = new Intent();
intent.setAction("my.custom.action");
intent.addCategory("android.intent.category.DEFAULT");
intent.putExtra("foo","bar");
startActivity(intent);
我也尝试使用包名来获取意图,但它也没有用(虽然我不想使用这种方法,因为我不想公开我的包名和组件)
Intent intent = getPackageManager().getLaunchIntentForPackage("com.happay.android.acslibrary");
最后我尝试使用明确的意图:
Intent intent = new Intent(this,LibMainActivity.class);
startActivity(intent);
这并没有抛出异常,但没有打开我的库活动。它刚从我的主项目中打开了同样的活动。 这是我的图书馆项目清单,我注册了我的活动:
<activity android:name=".LibMainActivity">
<intent-filter>
<action android:name="my.custom.action" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我做错了什么?
答案 0 :(得分:1)
从传递给Intent
的{{1}}中删除该类别。您已将类别startActivity()
添加到LAUNCHER
,但您的Intent
仅包含类别<intent-filter>
。没有比赛。根据{{3}}:
如果Intent中的所有类别都匹配,则匹配 过滤器中给出的类别。过滤器中的额外类别 不在Intent中不会导致匹配失败。注意 与动作不同,没有类别的IntentFilter只会匹配 一个没有任何类别的意图。