Android - 无法获得IntentFilter的优先级

时间:2017-05-02 13:23:03

标签: java android intentfilter

在我的程序中,我搜索符合特定意图的包 从我得到的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获取优先级值的方法?

0 个答案:

没有答案