2016-05-06 6 views
2

最近タスクからアプリが削除されても、静的に宣言されたBroadcastReceiverがブロードキャストを受信できるかどうか分かりますか?AndroidのスタティックBroadcastReceiverがアプリケーションが最近のタスクから削除されたときに機能しない

Bluetoothデバイスが接続されているときにブロードキャストされたイベントを再生しようとしています。

のAndroidManifest.xml

<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name=".MyReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="FROM_SERVICE"/> 
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" /> 
      <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" /> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
     </intent-filter> 
    </receiver> 
</application> 

MyReceiver.java

public class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     String action = intent.getAction(); 
     Log.i("MyReceiver", intent.getAction()); 
     Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 

     if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { 
      Log.i("MyReceiver", "BT device connected!"); 
      v.vibrate(500); // Vibrate for 500 milliseconds 
     } 
    } 
} 

参考:

Why BroadcastReceiver works even when app is in background ?

Keep broadcast receiver running after application is closed

Android BroadcastReceiver Not being called after app closed from Running App List

+0

いいえ最近のタスクからアプリを削除すると、BRは登録解除されるため、ブロードキャストは受信されません。 – Piyush

+1

@PiyushGuptaそれから、他の方法はありますか?私はServiceとIntentServiceを試しました。最近の仕事からAppが削除されると、両方とも殺されました。 Musicアプリケーションを最近のタスクから削除した場合でも、音楽は再生され、コントロールは通知バーに表示されます。ありがとう! – Wilson

+0

@Wilsonは、特定の携帯電話で同じ問題に直面しているため、この問題の解決策を得ています。 – Parth

答えて

0

は静的放送は、あなたが最近仕事からそれを削除しても動作します宣言しました。 開発者サイトからドキュメントを追加しています。お役に立てれば!

マニフェスト-宣言レシーバあなたが マニフェストに放送受信機を宣言した場合(アプリが既に 実行されていない場合)、ブロードキャストが送信されたとき、システムがあなたのアプリを起動します。

注:アプリのターゲットのAPIレベル26以上ならば、あなたはいくつかの暗黙の 放送を除き、暗黙の放送(放送、具体的にアプリをターゲットにしていない )のための受信機を宣言する マニフェストを使用することはできませんその制限が免除されます。ほとんどの場合、 では代わりにスケジュールされたジョブを使用できます。

関連する問題