createChooser() 대화 상자를 사용하여 사용자에게 어떤 앱을 선별했는지 감지하고 싶습니다. 그래서 이렇게 내 BroadcastReceiver
서브 클래스를 만들었습니다createChooser (context, intent, IntentSender)가 실행 된 후에 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());
}
}
또한
내 안드로이드 매니페스트 파일로 내 수신기를 추가했습니다 : 여기
<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
intent-filter
없이 직접 ShareBroadcastReceiver
클래스 이름을 사용하고 있기 때문에 사용자가 선택기 대화 상자를 클릭 한 직후에 내 브로드 캐스트 수신기가 콜백되지 않고 무엇이 잘못 되었습니까?