2016-04-24 13 views
0

" android:exported = "true" "を削除するか、FALSEにすると、BroadCastの受信機は動作しません: -/ これを解決するにはこのイベントに耳を傾けるあなたの放送受信機はあなたのアプリケーションの外部をトリガーできるため、エラーが、私はSMSを受信すると、いくつかのアクションを実行しようとしているときに!!BROADCAST受信者登録がエラーを引き起こす理由"android:exported =" true "

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.pucit.arsh_hp.multisms"> 

    <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" 
      android:label="@string/app_name"  
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 


     </activity> 

     <receiver android:name=".SmsReceiver" android:exported="true"> 
      <intent-filter android:priority="999"> 
       <action  android:name="android.provider.Telephony.SMS_RECEIVED" android:enabled="true" /> 
      </intent-filter> 
     </receiver> 

    </application> 

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <uses-permission android:name="android.permission.SEND_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.READ_CALL_LOG"/> 

</manifest> 

答えて

0

あなたは絶対、android:exported="true"を維持する必要があります。

アンドロイド:輸出 Whe可能であれば放送受信機はそのアプリケーションの外部からのメッセージを受信することができるかどうかは「真」、そうでない場合は「偽」である。 「false」の場合、ブロードキャスト受信者が受信できるメッセージは、同じアプリケーションのコンポーネントまたは同じユーザーIDを持つアプリケーションによって送信されたメッセージだけです。 デフォルト値は、ブロードキャストレシーバにインテントフィルタが含まれているかどうかによって異なります。フィルタが存在しない場合は、正確なクラス名を指定するIntentオブジェクトによってのみ呼び出すことができます。これは、受信者がアプリケーション内部使用のみを意図していることを意味します(他のクラスは通常クラス名を知らないため)。この場合、デフォルト値は "false"です。他方、少なくとも1つのフィルタの存在は、放送受信機がシステムまたは他のアプリケーションによって放送されたインテントを受信することを意図していることを意味するので、デフォルト値は「真」である。

この属性は、ブロードキャスト受信機の外部への露出を制限する唯一の方法ではありません。また、メッセージを送信できる外部エンティティを制限する権限を使用することもできます(permission属性を参照)。

http://developer.android.com/guide/topics/manifest/receiver-element.html#exported

あなたのクラッシュは、あなたのBroadcastReceiverで受信したデータを処理するコードに関連して、BroadcastReceiver自体に起因するものではないしなければなりません。

+0

@Clarkありがとうございます。問題は解決しました。 :-) –

関連する問題