2016-09-22 8 views
0

У меня есть BroadcastReceiver, который не создается или не вызван, любая помощь в том, что я делаю, оценивается.BroadcastReceiver не создается экземпляр

Он должен отвечать на события подключения/отключения Wi-Fi, но это не так, и конструктор суперкласса даже не вызван.

MainActivity:

public class MainActivity extends AppCompatActivity { 

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

BroadcastReceiver:

public class ConnectivityChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.v(TAG, "action: " + intent.getAction()); 
     Log.v(TAG, "component: " + intent.getComponent()); 
    } 
} 

AndroidManifest.xml:

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

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

    <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"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver 
      android:name=".ConnectivityChangeReceiver" 
      android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

ответ

1

<action> Имя установлен неправильно. Это должно быть: android.net.conn.CONNECTIVITY_CHANGE. См. «Постоянное значение», как описано here.

+0

Спасибо, это сработало, хотя у меня есть еще одна проблема :-). Предупреждение. Объявление трансляции для android.net.conn.CONNECTIVITY_CHANGE устарело для приложений с таргетингом N и выше. В общем, приложения не должны полагаться на эту трансляцию и вместо этого использовать JobScheduler или GCMNetworkManager – Rory

+0

Да, это изменение с Android N. Долгосрочный план Google заключается в том, чтобы удалить всю трансляцию, которая может пробудить приложение, которое еще не запущено. Это вызывает много мошенничества, которое обычно не нужно. Вы можете регистрироваться для этой трансляции динамически, хотя, используя свою активность. –

Смежные вопросы