0

私はBroadcastReceiverというアクセス方法を実装しようとしています。Androidブロードキャスト - アクセス許可を使って送受信する

送信者クラスでは、私は受信機クラスでAndroidManifestファイル

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

で、通常の放送

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

を送信しようと、私はカスタムに書く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")); 
     } 
    } 

とその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> 

私が最初受信アプリケーションをインストールし、送信者。そして、それは働いた!

しかし、私がsendBroadcast(intent,"com.nhp");に電話しようとすると、決して何も引き起こされません。誰でも私の理由を説明することができますか?ありがとうございます

答えて

1

カスタムアクセス許可は送信者に宣言し、受信者はそれを要求する必要があります。

また、ブロードキャスト受信者はandroid:permission属性を必要としません。送信者に特定の許可が必要な場合にのみ使用してください。


送信者

は、送信者は、そのマニフェスト

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

でカスタム許可を宣言し、放送

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

を送るレシーバ

そのマニフェストでカスタム許可する受信要求をブロードキャストもちろん​​

<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> 

the order of the installations is importantを待機し、それがカスタム許可を定義すると、送信者のアプリを最初にインストールする必要があります。

注:カスタムアクセス許可は、アプリケーションのインストール時に登録されます。カスタムアクセス許可を定義するアプリは、それを使用するアプリの前にインストールする必要があります。

+0

素晴らしい!ありがとうございました –

関連する問題