我有两个相互依赖的应用程序,现在我想对所有必需的意图是否可用进行测试。
我使用了Android开发者博客的一般实现:
http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html
public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION); // ADDED BY ME
List<ResolveInfo> list =
packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
第二个应用程序的清单(我检查过)包含以下活动:
<activity android:name="MyPackageMyAction" android:exported="true" android:enabled="true">
<intent-filter android:label="License">
<action android:name="com.mypackage.action.myaction"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我用
检查boolean available = isIntentAvailable(this,“com.mypackage.action.myaction”);
日志输出包含:
VERBOSE/IntentResolver(59): Resolving type null scheme null of intent Intent { act=com.mypackage.action.myaction flg=0x8 }
VERBOSE/IntentResolver(59): Action list: [ActivityIntentInfo{440482c0 com.mypackage.action.myaction}]
VERBOSE/IntentResolver(59): Matching against filter ActivityIntentInfo{440482c0 com.mypackage.action.myaction}
VERBOSE/IntentResolver(59): Filter matched! match=0x108000
VERBOSE/IntentResolver(59): Final result list:
所以,我通常会假设如果安装了第二个应用程序,isIntentAvailable会返回true。但是,queryIntentActivities返回的列表始终为空。
我做错了什么?
答案 0 :(得分:1)
好的,我觉得现在非常愚蠢。在经历了这个问题大约一天后,我发现了问题。
如果我不是那么愚蠢的话,一切都被正确注册并应该完美无缺:-)。接收意图的应用程序是许可证密钥,应该从启动器隐藏。因此我在我的应用程序中有这一行:
pkgMgr.setApplicationEnabledSetting(PACKAGE_NAME, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
删除后,一切都会立即发挥作用。感谢您的支持!
答案 1 :(得分:0)
如果您说这是唯一的only
活动,那么该类别必须为LAUNCHER
<activity android:name="MyPackageMyAction" android:exported="true" android:enabled="true">
<intent-filter android:label="License">
<action android:name="com.mypackage.action.myaction"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
此外,您可以在Intent
找到更多信息
http://developer.android.com/reference/android/content/Intent.html#CATEGORY_LAUNCHER