Android QueryEventActivityOptions中的ResolveInfo项的优先级始终为0

Android QueryEventActivityOptions中的ResolveInfo项的优先级始终为0,android,android-intent,android-activity,share,Android,Android Intent,Android Activity,Share,我正在为ACTION\u SENDintent实现自定义共享功能。我想从共享列表中排除我自己的应用。为了实现这一点,我使用getPackageManager().queryIntentActivityOptions(…)获取所有合适的活动,然后检查包 问题是,getPackageManager().queryIntentActivityOptions(…)返回一个ResolveInfo对象列表,其中优先级始终为0,并且应用程序顺序错误-与默认共享对话框中的情况不同。因此,应用程序在列表中没有正确

我正在为
ACTION\u SEND
intent实现自定义共享功能。我想从共享列表中排除我自己的应用。为了实现这一点,我使用
getPackageManager().queryIntentActivityOptions(…)
获取所有合适的活动,然后检查包

问题是,
getPackageManager().queryIntentActivityOptions(…)
返回一个
ResolveInfo
对象列表,其中
优先级始终为
0
,并且应用程序顺序错误-与默认共享对话框中的情况不同。因此,应用程序在列表中没有正确的顺序,对用户来说也不方便。 下面是一个代码,它不支持共享:

 public void shareExcludingApp(String packageNameToExclude, Uri imagePath) {
    List<Intent> targetedShareIntents = new ArrayList<>();
    Intent share = new Intent(android.content.Intent.ACTION_SEND);
    share.setType("image/*");

    List<ResolveInfo> resInfo = mContext.getPackageManager().queryIntentActivities(createShareIntent(imagePath), 0);

    if (!resInfo.isEmpty()) {
        for (ResolveInfo info : resInfo) {
            Intent targetedShare = createShareIntent(imagePath);

            if (!info.activityInfo.packageName.equalsIgnoreCase(packageNameToExclude)) {
                targetedShare.setPackage(info.activityInfo.packageName);
                targetedShareIntents.add(targetedShare);
            }
        }

        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), mContext.getString(R.string.choose_an_app));
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
        mContext.startActivity(chooserIntent);
    }

}

private Intent createShareIntent(Uri uri) {
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("image/*");
    share.putExtra(Intent.EXTRA_STREAM, uri);
    return share;
}
public void shareExcludingApp(字符串packageNameToExclude,Uri imagePath){
List targetedShareContents=new ArrayList();
意向共享=新意向(android.content.Intent.ACTION\u SEND);
share.setType(“image/*”);
List resInfo=mContext.getPackageManager().QueryInputActivities(createShareIntent(imagePath),0);
如果(!resInfo.isEmpty()){
对于(ResolveInfo:resInfo){
Intent targetedShare=createShareIntent(imagePath);
如果(!info.activityInfo.packageName.equalsIgnoreCase(packagenamotoExclude)){
targetedShare.setPackage(info.activityInfo.packageName);
targetedShareContents.add(targetedShare);
}
}
Intent chooserecontent=Intent.createChooser(targetedShareContents.remove(0),mContext.getString(R.string.choose_an_app));
选择content.putExtra(Intent.EXTRA_INITIAL_INTENTS,targetedShareContents.toArray(新包裹[]{}));
mContext.startActivity(选择内容);
}
}
私有意图createShareIntent(Uri){
意向共享=新意向(意向.行动\发送);
share.setType(“image/*”);
share.putExtra(Intent.EXTRA\u流,uri);
回报份额;
}
我是否配置了错误的意图?我需要在某处提供更多数据吗? 谢谢


更新: 多亏了@commonware,我意识到我自己不应该使用
priority
对列表进行排序,而是应该已经对列表进行了排序(querytentActivities):

返回ResolveInfo对象的列表,其中包含每个匹配活动的一个条目,按从最佳到最差的顺序排列


但在我的情况下,它没有正确分类,我把活动搞混了。你能帮帮我吗?

AFAIK,
priority
android:priority
元素上的属性驱动,因此不用于在对话框中排序。您可以根据一些标准对
targetedShareContent
(例如,
Collections.sort()
)进行排序,例如name.right谢谢。我现在的问题是为什么活动列表没有正确排序。文档说明:
返回一个ResolveInfo对象列表,其中包含每个匹配活动的一个条目,从最佳到最差排序。