我試圖讓我的應用程序在手機連接到wifi時自動啓動。下面是我使用的這兩個設置的廣播接收器,並指定一旦接收到廣播我要推出的「連接」活動代碼:Android:如何在接收特定廣播時啓動我的應用程序?
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
Intent intent2 = new Intent(getApplicationContext(),com.example.package.Connected.class);
startActivity(intent2);
}
};
registerReceiver(receiver,intentFilter);
遺憾的是它不工作。 logcat說我的活動「泄露了IntentReceiver」。
有誰知道我該如何解決這個問題?
EDIT:我也嘗試通過Manifest文件註冊接收器。一旦手機連接到WiFi
private BroadcastReceiver receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
Intent intent2 = new Intent(getApplicationContext(),com.example.package.Connected.class);
context.startActivity(intent2);
}
};
但現在我的應用程序崩潰:我加入這個代碼清單:
<receiver android:name="com.example.package.receiver">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
,然後將此代碼到我的主要活動。 Logcat說「RuntimeException:無法實例化接收器」。
任何想法如何解決呢?
在第二種情況下,您需要製作一個seprate類擴展BroadcastReceiver並在android:name =「com.example.package.receiver」中給出該包的名稱,其中包括類名稱 –
謝謝,現在正在處理它。 –
下面是一個示例應用程序,顯示了一個清單註冊的接收器:https://github.com/commonsguy/cw-omnibus/tree/master/SystemEvents/OnWiFiChange – CommonsWare