2017-04-08 34 views
0

私はネットワークの変更をキャプチャするためにbroadcastreceiverを使用しようとしていますが、まったく動作していないようです。Androidブロードキャスト受信機が機能していませんか?

マイbroadcastreceiver:

public class btReceiver extends BroadcastReceiver { 
public btReceiver() { 

} 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Log.d("BB","Received!"); 
    Toast.makeText(context, "Action: " + intent.getAction(), Toast.LENGTH_LONG); 
} 
} 

私はそれを呼び出す方法:

IntentFilter filter = new IntentFilter(); 
    filter.addAction(getPackageName() + "android.net.conn.CONNECTIVITY_CHANGE"); 

    btReceiver myReceiver = new btReceiver(); 
    registerReceiver(myReceiver, filter); 

しかし、私はのは、無線LANを言わせて切り替えるしようとすると、何もまったく起こりません。

<receiver android:name=".btReceiver" android:enabled="true" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
</receiver> 

しかし、また、動作しないこと:私もそうのようなマニフェストでそれを宣言してみました。

私は私のマニフェストに十分な権限を宣言している:それは発射いない理由は、誰もが知っているん

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

私の試験装置は、Androidの7.1.1を実行していますか?

答えて

0

あなたのパッケージ名はIntentアクションの一部であってはなりません。そうで試してみてください。

さらに良い
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); 

、そのための定数があります:アンドロイドN (Nougat)をターゲット

filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
0

アプリは、彼らはこれらのイベントの通知を要求するためにマニフェストのエントリを持っている場合でも、CONNECTIVITY_ACTION放送を受信しません。 BroadcastReceiverで通知を要求すると、実行中のアプリケーションはメインスレッドでCONNECTIVITY_CHANGEを聞くことができます。彼は、プログラム `BroadcastReceiver`を登録しているが、法的である、

あなたはそれをプログラムで登録する必要がありますか。これは本当ですJobSchedulerGcmNetworkManagerまたはandroid-jobライブラリ

+0

を使用しています。彼はおそらくマニフェストに受信機を追加して動作させました。これは間違った 'Intent'アクションをインターセプトしようとしているので意味がありません – quiro

関連する問題