0

Ich versuche, die Berechtigung Ansatz von BroadcastReceiver zu implementieren.Android Broadcasts - Senden und Empfangen mit Berechtigungen

In Absender Klasse, ich versuche

<uses-permission android:name="com.nhp"/> 

In Empfänger Klasse

Intent intent = new Intent(); 
    intent.setAction("com.vn.BroadcastReceiver"); 
    intent.putExtra("Foo", "Bar"); 
    sendBroadcast(intent); 

mit AndroidManifest Datei eine normale Sendung zu schicken, schreibe ich eine benutzerdefinierte FirstBroadcastReceiver

public class FirstBroadcastReceiver extends BroadcastReceiver { 
     private static final String TAG = FirstBroadcastReceiver.class.getSimpleName(); 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d(TAG, "onReceive: " + intent.getStringExtra("Foo")); 
     } 
    } 

und seine AndroidManifest

<permission android:name="com.nhp" /> 

    <receiver 
     android:permission="com.nhp" 
     android:exported="true" 
     android:name=".receivers.FirstBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="com.vn.BroadcastReceiver" /> 
     </intent-filter> 
    </receiver> 

ich installieren Empfänger Anwendung zuerst und Absender dann. Und es hat funktioniert!!

Aber wenn ich versuche, sendBroadcast(intent,"com.nhp"); aufzurufen, löst es nie etwas aus. Jeder kann mir erklären warum? Danke

Antwort

1

Die benutzerdefinierte Erlaubnis sollte im Absender erklärt werden und der Empfänger sollte es anfordern.

Darüber hinaus benötigt Broadcast-Empfänger das android:permission Attribut nicht. Sie sollten es nur verwenden, wenn der Absender eine bestimmte Berechtigung haben muss.


Sender

Der Absender in seinem Manifest die benutzerdefinierte Berechtigung erklärt

<permission android:name="com.nhp" /> 

und sendet die Sendung

Intent intent = new Intent(); 
intent.setAction("com.vn.BroadcastReceiver"); 
intent.putExtra("Foo", "Bar"); 
sendBroadcast(intent, "com.nhp"); 

Empfänger

Die Empfänger-Anfragen für die benutzerdefinierte Berechtigung in seinem Manifest und warten auf Sendungen

<uses-permission android:name="com.nhp"/> 
... 
... 
... 
<receiver 
    android:exported="true" 
    android:name=".receivers.FirstBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="com.vn.BroadcastReceiver" /> 
    </intent-filter> 
</receiver> 

Natürlich the order of the installations is important und der Absender App zuerst, wie es die benutzerdefinierte Berechtigung definiert installiert werden muss.

Hinweis: Benutzerdefinierte Berechtigungen werden registriert, wenn die App installiert wird. Die App, die die benutzerdefinierte Berechtigung definiert, muss vor der App installiert werden, die sie verwendet.

+0

Großartig! Vielen Dank –