[英]Broadcast Receiver for gps and network
我正在嘗試檢測網絡和gps的狀態,我想請用戶打開它們,以防它們被關閉。
這是我第一次使用BroadcastReceiver,已經閱讀了文檔並創建了此方法。
我想創建一個動態接收器而不是一個靜態接收器。
您能否幫助我糾正此方法,因為它們無法正常工作,我也不知道問題出在哪里。
// BroadcastReceiver類:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
LocationManager locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
Intent newintent;
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
newintent = new Intent();
intent.putExtra("Network", "CONNECTIVITY");
context.sendBroadcast(newintent);
}
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
newintent = new Intent();
intent.putExtra("GPS", "GPSPROVIDER");
context.sendBroadcast(newintent);
}
}
}
//我希望此接收器工作的活動:
MyBroadcastReceiver broadcastReceiver = new MyBroadcastReceiver();
@Override
protected void onStart() {
super.onStart();
IntentFilter filter = new IntentFilter();
registerReceiver(broadcastReceiver, filter);
Log.d(TAG, "onStart: broadcastReceiver Start");
Bundle extras = getIntent().getExtras();
if (extras != null) {
String newtork = extras.getString("Network");
String gps = extras.getString("GPS");
if(newtork == "CONNECTIVITY" || gps == "GPSPROVIDER"){
Log.d(TAG, "onStart: Something Change");
checkServices();
}
}
}
我看到的第一個問題是您的意圖過濾器不包含任何操作。 您可能想要這樣的東西:
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(broadcastReceiver, filter);
第二個問題是您創建並作為廣播發送的新意圖未定義動作。 它僅包含其他內容。 您將需要執行以下操作:
newintent = new Intent("SOME_ACTION");
newintent.putExtra("Network", "CONNECTIVITY");
context.sendBroadcast(newintent);
然后,您需要定義一個可以接收SOME_ACTION的接收器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.