1

あるサービスから別のサービスへのintent.putExtra供給に使用する際に問題が発生しています。ResultReceiverインテント ハンドラーを使用しないputExtraと、定期的な結果が得られますが、インテント ハンドラーが含まれていると、追加された値以外は何も見つかりません。

[ 0]と [2]putExtraの3 つのエントリのうち、[0] がありません。コードに を含めると、 my の唯一のエントリは [2]です。mExtras->mMap->tablecom.google.android.location.internal.EXTRA_RELEASE_VERSIONcom.google.android.location.internal.EXTRA_ACTIVITY_RESULTputExtramExtras->mMap->tableRESULT_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含まれているかで結果が見つからないだけです。

4

2 に答える 2