2016-04-29 17 views
0

私はAndroidには新しく、Broadcast Receiverを動的に登録しようとしていますので、smssを受信できるようになりましたが、動作させることができません。コード:BroadcastReceiverを動的に登録できないようです

public class MainActivity extends AppCompatActivity { 

BroadcastReceiver receiver; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 

    receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Toast.makeText(getApplicationContext(), "Hellllo", Toast.LENGTH_SHORT).show(); 
     } 
    }; 
    IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
    registerReceiver(receiver,filter); 
} 

「こんにちは」トーストは文句を言わないので、私は受信機が、私は私のマニフェストにこの権限を置く

を登録されていなかったと仮定していますポップアップ表示:私は何をしないのです

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

+1

SMSを受け取ったときにフォアグラウンドであなたの「活動」はありますか?あなたのパーミッションは ''タグの範囲外ですか?あなたの 'targetSdkVersion'とは何ですか、あなたはAndroidのどのバージョンをテストしていますか? –

+0

SMSを受け取っているときに、アクティビティがフォアグラウンドになっています。 パーミッションはタグの範囲外です。 minSdkVersion 16. targetSdkVersion 23. Androidでのテスト4.2.2 API 17. – javaLovah

+2

ブロードキャストを傍受している別のSMSアプリがインストールされていますか?ハングアウト、GoSMSなど –

答えて

0

SMS_RECEIVEDブロードキャストが他のアプリによって傍受され、中止されたとコメントで判断しました。これはKitKat(API 19)より前のAndroidでは可能でしたが、それ以降のバージョンではありません。

解決策は、IntentFilter#setPriority()メソッドを使用して、IntentFilterインスタンスの優先度を999に設定することでした。

ただし、別のアプリがあなたの受信前に放送を中止することは可能です。同じ優先度のIntentFilterのレシーバがブロードキャストを任意の順序で配信されるとドキュメントでは伝えられていますが、通常、アプリがインストールされた順番に配信されます。さらに、システムアプリ、プリインストールされたアプリなどの一部のアプリでは、アプリの最大実用価値である999よりも優先度が高くなる可能性があります。

関連する問題