2

Android M での共有と、フィルターを使用したインテント チューザーの作成に問題があります。標準のテキスト共有インテントを作成しました。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, getSharingText());
return intent;

次に、セレクターにフィルターを適用しました。

List<Intent> targetedShareIntents = new ArrayList<>();
List<ResolveInfo> resolves = getActivity().getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : resolves) {
    String packageName = resolveInfo.activityInfo.packageName;

    Intent targetedShareIntent = new Intent(mPromoIntent);
    if (!packageName.equals("com.facebook.katana")
            && !packageName.equals("com.vkontakte.android")) {
        ComponentName componentName = new ComponentName(packageName, resolveInfo.activityInfo.name);
        targetedShareIntents.add(targetedShareIntent.setComponent(componentName));
    }
}

if (targetedShareIntents.isEmpty()) {
    return null;
}
Intent chooser = targetedShareIntents.remove(0);
return Intent.createChooser(chooser, chooserText)
        .putExtra(Intent.EXTRA_INITIAL_INTENTS,
                targetedShareIntents.toArray(new Parcelable[targetedShareIntents.size()]));

そして、chooser インテントを使用して標準の Chooser ChooserActivity を開始しました

startActivity(mAppsChooserIntent);

しかし、Android M では、セレクターは表示されず、最初のインテント (私の場合は bluetooth) を受け取り、それと共有します。
Android MNC では Android L よりもはるかに大きい ChooserActivity クラスを調べましたが、解決策が見つかりませんでした。
誰かが答えを知っていますか、それとも Android M のプレビュー バグですか?

4

0 に答える 0