7

createChooser()ダイアログを表示した後、ユーザーが選択したアプリを検出したいと考えています。したがって、次のBroadcastReceiverようにサブクラスを作成しました。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class ShareBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("INFORMATION", "Received intent after selection: "+intent.getExtras().toString());
    }
}

また、受信機を Androidマニフェストファイルに追加しました。

<application>
...
...
...
    <receiver android:name=".helpers.ShareBroadcastReceiver" android:exported="true"/>
</application>

createChooserダイアログを呼び出すコードは次のとおりです。

Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setType("image/png");

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
    Log.d("INFORMATION", "The current android version allow us to know what app is chosen by the user.");

    Intent receiverIntent = new Intent(this,ShareBroadcastReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, receiverIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    sendIntent = Intent.createChooser(sendIntent,"Share via...", pendingIntent.getIntentSender());
}
startActivity(sendIntent);

なしでクラス名を直接PendingIntent使用しているため、これは明示的ですが、ユーザーが選択ダイアログをクリックした直後にブロードキャストレシーバーがコールバックされていません。何が間違っていますか?ShareBroadcastReceiverintent-filter

4

1 に答える 1