2017-08-22 1 views
0

J'ai eu un récepteur de radiodiffusion défini dans mon manifeste pour recevoir l'état du téléphone, comme ça ...Android O (reo) Broadcast Receiver ne se déclenche pas.

<receiver 
      android:name=".TelephonyManagerReceiver" 
      android:enabled="true" 
      android:exported="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 

Je sais que dans Android OI doivent supprimer ce registre et le récepteur dans le code, donc je l'ai fait cela ...

private BroadcastReceiver callReceiver; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 

     callReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 

       Log.i("Phone","received"); 
      } 
     }; 

     this.registerReceiver(
       callReceiver, 
       new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED) 
     ); } 

Je vous attendriez à voir l'enregistrement quand je reçois/faire un appel, mais je ne le fais pas. Des idées?

+1

Cela a déjà été demandé aujourd'hui. Et a répondu. – greenapps

+0

..et non, il ne se déclenche toujours pas lorsqu'il est configuré dans un service de premier plan. –

Répondre

0

J'ai eu le même problème. J'ai ajouté deux permissions dynamiques: CALL_PHONE, READ_PHONE_STATE et le récepteur fonctionne bien même s'il n'est déclaré que dans le fichier manifeste. J'ai testé la solution sur l'émulateur et également sur le téléphone - Nexus 5.

(De cette façon, il fonctionne lorsque l'application est ouverte ou en arrière-plan, si vous fermez l'application, cela ne fonctionnera pas .Pour cela, je pense que vous devez utiliser au premier plan service)

J'espère que ce n'est pas trop tard.