あるサービスから別のサービスへのintent.putExtra
供給に使用する際に問題が発生しています。ResultReceiver
インテント ハンドラーを使用しないputExtra
と、定期的な結果が得られますが、インテント ハンドラーが含まれていると、追加された値以外は何も見つかりません。
[ 0]と [2]putExtra
の3 つのエントリのうち、[0] がありません。コードに を含めると、 my の唯一のエントリは [2]です。mExtras->mMap->table
com.google.android.location.internal.EXTRA_RELEASE_VERSION
com.google.android.location.internal.EXTRA_ACTIVITY_RESULT
putExtra
mExtras->mMap->table
RESULT_RECEIVER
IntentService ハンドラ
protected void onHandleIntent(Intent intent) {
if (ActivityRecognitionResult.hasResult(intent)) {
ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
DetectedActivity activity = result.getMostProbableActivity();
ResultReceiver receiver = intent.getParcelableExtra(ActivityRecognitionService.RESULT_RECEIVER);
Bundle bundle = new Bundle();
bundle.putParcelable("activity", activity);
receiver.send(CODE, bundle);*/
}
}
ActivityRecognitionService.ACTIVITY = activity;
私が現在データを取得している方法です。ResultReceiver
これは、Android 開発者ページで言及されているデータ転送の可能性の 1 つですが、または他のコールバック システムを使用して行う方が適切だと思います。
インテントを所有するクラス、ActivityRecognitionService
(参照用に、アクティビティにバインドされたサービスでもあります)
の作成と接続はactivityClient
で行われることに注意してください。onCreate()
static final String RESULT_RECEIVER = "com.example.myApp.RESULT_RECEIVER";
void onConnected(Bundle connectionHint) {
Intent intent = new Intent(ActivityRecognitionService.this, ActivityRecognitionIntentService.class);
intent.putExtra(ActivityRecognitionService.RESULT_RECEIVER, resultReceiver);
PendingIntent callbackIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
activityClient.requestActivityUpdates(DETECTION_INTERVAL, callbackIntent);
}
エラーは発生しません。hasResult(intent)
いつputExtra
含まれているかで結果が見つからないだけです。