1

位置更新アンドロイドRequestLocationUpdates

PendingIntent pendingIntent = PendingIntent 
      .getBroadcast(this, 54321, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
     LocationServices.FusedLocationApi.requestLocationUpdates(this.mGoogleApiClient, 
      mLocationRequest, pendingIntent); 

そして、私のReceiever

public static class LocationReceiver extends BroadcastReceiver { 

@Override 
    public void onReceive(Context context, Intent intent) { 
     boolean hasLocation = LocationResult.hasResult(intent); 
    } 
} 

を受信したとき、私は罰金hasLocationは常に働くeveything上記のコードを実行した場合、私はBoradcastReceiverをトリガしています本当、完璧。

しかし、私はReceiverにいくつかの変数を渡したい場合ので、私は実行します。今、レシーバのLocationResult.hasResult(意図)で

Intent intent = .. 
intent.putExtra("test", "hello"); 
PendingIntent pendingIntent = PendingIntent 
       .getBroadcast(this, 54321, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

ビット。常にfalseです

これはバグですか?これには回避策がありますか?レシーバに変数を渡すにはどうすればいいですか?

+0

'hasResult'はtrueまたはfalseを返しますか? –

+0

hasResultは、インテントに余分なものを入れないとTRUEを返します。 – Johny19

+0

hasResultは常にNULLですが、ブール値を返します。それは真実か偽ですか?場合は、意図に余分を入れてください –

答えて

0

グーグルであなたの質問が見つかりました。他の誰かがこのような質問を私のように見つけた場合、私は解決策を共有します。

まず、これはあなたに似ている、私の状況です:

requestLocationUpdates()意図のmExtrasフィールド内の位置データを格納します。何らかの理由で、Intent.putExtra()を使用して別のExtraをIntentに追加すると、位置データは追加されません。したがって、onHandleIntent()は呼び出されましたが、インテントには位置データがありません。エクストラを追加しないと、位置情報が届き、すべてが正常です。

私の回避策:

私はputExtra( "myExtraName"、文字列)とまったく同じことをやってIntent.addCategory()とのgetCategory()を使用。他のデータ型を渡したい場合は、文字列に変換してからonHandleIntent()で解析します。

私の環境:

FusedLocationProviderApiは最近廃止されましたので、私は、プレイサービスのバージョン11.0.4とFusedLocationProviderClientを使用しています。 FusedLocationProviderClient.requestLocationUpdates()のマニュアルではこれに対処していないようです。

+0

ドキュメントはこれを扱っていません。しかし、それはまだ同じ問題を抱えているようです。私はちょうどそれに遭遇し、ここでこれを見つけた。 –

+1

addCategoryを使用することには1つの問題(または違い)があります。そして、それは "removeLocationUpdates"を呼び出すときです。エクストラでは無視されます。カテゴリでは、カテゴリは同じでなければなりません。したがって、同じカテゴリの同じPendingIntentを作成した場合にのみキャンセルできます。 –

関連する問題