簡體   English   中英

GPS和網絡的廣播接收器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM