Skip to content

Instantly share code, notes, and snippets.

@nein37
Created August 11, 2014 02:04
Show Gist options
  • Save nein37/95bf82680b644a24f959 to your computer and use it in GitHub Desktop.
Save nein37/95bf82680b644a24f959 to your computer and use it in GitHub Desktop.
BroadcastReceiverの処理結果を受け取る方法 ref: http://qiita.com/nein37/items/b50022a5c44546064437
BroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MY_ACTION);
// 優先度を高めに設定
intentFilter.setPriority(100);
registerReceiver(receiver, intentFilter);
@Override
public void onReceive(Context context, Intent intent)
{
// onReceive処理
// 前のBroadcastReceiverの判定を引き継ぐ
setResultCode(getResultCode());
// Extrasに何か入れてみる
// 引数をtrueにするとnullの場合自動生成してくれる
Bundle extras = getResultExtras(true);
extras.putString("key", "value");
setResultExtras(extras);
}
@Override
public void onReceive(Context context, Intent intent)
{
// onReceive処理
if(FAILED){
// 失敗したのでこのReceiverで処理を終了したい
// RESULT_CANCELEDにするのが良いかも?
setResultCode(Activity.RESULT_CANCELED);
// これより優先順位が低いBroadcastReceiverは実行されない
abortBroadcast();
}
}
public abstract void sendOrderedBroadcast (Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
@Override
public void onReceive(Context context, Intent intent)
{
// 処理結果
getResultCode();
getResultData();
getResultExtras(false);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment