在我的程序中,我搜索符合特定意图的包 从我得到的ResolveInfo列表中,然后我尝试根据其IntentFilter的优先级对包进行排序。但是当我使用intentFilter.getPriority()方法时,它总是返回0,即使在目标包的清单中使用了不同的优先级值。
以下是Manifest的一个示例:
<intent-filter
priority='100'>
<action
name='com.gsma.services.nfc.action.TRANSACTION_EVENT'>
</action>
<category
name='android.intent.category.DEFAULT'>
</category>
<data
scheme='nfc'
host='secure'
pathPattern='/SIM.*/a0000005595000000000000052414431'>
</data>
</intent-filter>
以下是我检索ResolveInfo和优先级的代码:
Intent gsmaIntent = new Intent();
gsmaIntent.setAction("com.gsma.services.nfc.action.TRANSACTION_EVENT");
gsmaIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
gsmaIntent.setData(Uri.parse("nfc://secure:0/"+ seName+"/"+ strAid));
PackageManager pm = mContext.getPackageManager();
List<ResolveInfo> resInfo = pm.queryIntentActivities(gsmaIntent,
PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_RESOLVED_FILTER);
...
if ((resInfo != null) && (resInfo.size() != 0))
{
for (ResolveInfo res : resInfo)
{
intentFilter = res.filter;
if (intentFilter != null)
{
priority = intentFilter.getPriority();
...
编辑:是否缺少queryIntentActivities()调用的信息?
在我的第一次试用时,我没有使用PackageManager.GET_RESOLVED_FILTER标志,因此没有获得IntentFilter数据。是否有另一个标志来检索优先级值?
编辑2:如果上述代码无效,是否有人知道另一种从IntentFIlter获取优先级值的方法?