android 过滤应用 returns 两个推特

android filter app returns two twitter

我正在尝试过滤 phone 中的应用程序,facebook 和 twitter 是我想要查找的内容。下面是我使用的代码,它之前工作正常,它为我过滤推特和 facebook post 东西。后来它变成了我过滤两个推特应用程序。有人知道为什么吗?

调试多了发现了这些,怎么搞到两个twitter包。我已尝试删除并重新安装我的 Twitter 应用程序,但它不起作用。

ResolveInfo{445f8600 com.twitter.android/.composer.ComposerActivity m=0x608000} ResolveInfo{445f14d0 com.twitter.android/.DMActivity m=0x608000}

    private void shareContent() {
    UtuBaseActivity activity = (UtuBaseActivity) getActivity();
    if (activity == null || activity.isFinishing())
        return;

    if (promotionDetail == null)
        return;

    String title = getResources().getString(R.string.share_chooser_title);
    String app_name = getResources().getString(R.string.app_name);

    List<Intent> targetShareIntents = new ArrayList<>();
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    List<ResolveInfo> resInfos = activity.getPackageManager().queryIntentActivities(shareIntent, 0);
    if (!resInfos.isEmpty()) {
        for (ResolveInfo resInfo : resInfos) {
            String packageName = resInfo.activityInfo.packageName;
            if (packageName.contains("com.twitter.android") || packageName.contains("com.facebook.katana")) {
                Intent intent = new Intent();
                intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                intent.setAction(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.putExtra(Intent.EXTRA_SUBJECT, app_name);
                intent.putExtra(Intent.EXTRA_TEXT, promotionDetail.getCoverpicture());
                intent.setPackage(packageName);
                targetShareIntents.add(intent);
            }
        }

        if (!targetShareIntents.isEmpty()) {
            Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), title);
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
            startActivity(chooserIntent);
        } else {
            // As fallback, launch sharer.php in a browser
            String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + promotionDetail.getCoverpicture();
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
            startActivity(i);
        }
    }
}

添加这个,它已经过测试。

检查父名称是否等于 com.twitter.android.MainActivity

private void shareContent() {
    UtuBaseActivity activity = (UtuBaseActivity) getActivity();
    if (activity == null || activity.isFinishing())
        return;

    if (promotionDetail == null)
        return;

    String title = getResources().getString(R.string.share_chooser_title);
    String app_name = getResources().getString(R.string.app_name);

    List<Intent> targetShareIntents = new ArrayList<>();
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    List<ResolveInfo> resInfos = activity.getPackageManager().queryIntentActivities(shareIntent, 0);
    if (!resInfos.isEmpty()) {
        for (ResolveInfo resInfo : resInfos) {
            String packageName = resInfo.activityInfo.packageName;
            String parentName = resInfo.activityInfo.parentActivityName;
            if (packageName.contains("com.twitter.android") || packageName.contains("com.facebook.katana")) {

                if (packageName.contains("com.twitter.android"))
                if (!parentName.equals("com.twitter.android.MainActivity"))
                    continue;

                Intent intent = new Intent();
                intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                intent.setAction(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.putExtra(Intent.EXTRA_SUBJECT, app_name);
                intent.putExtra(Intent.EXTRA_TEXT, promotionDetail.getCoverpicture());
                intent.setPackage(packageName);
                targetShareIntents.add(intent);
            }
        }

        if (!targetShareIntents.isEmpty()) {
            Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), title);
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
            startActivity(chooserIntent);
        } else {
            // As fallback, launch sharer.php in a browser
            String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + promotionDetail.getCoverpicture();
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
            startActivity(i);
        }
    }
}