将字符串数据从 BroadcastReceiver 类传递到 Android Activity



我正在开发一个Android应用程序,它具有一个功能,如果用户启用或禁用GPS,则在应用程序运行时。我收到了广播并使用界面显示活动的状态。

全球定位接收器

public class GpsLocationReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
final LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

Toast.makeText(context, "GPS Disabled", Toast.LENGTH_SHORT).show();
}

}

我在清单中注册了此广播接收器.xml

<receiver android:name=".GpsLocationReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
  1. In Activity

    public void onResume() {
    registerReceiver(mGattUpdateReceiver,  new IntentFilter().addAction("ACTION_DATA_AVAILABLE");
    return intentFilter;);
    }
    public void onPause(){
    unregisterReceiver(mGattUpdateReceiver);
    }
    private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    final String action = intent.getAction();
    if(action.equals("ACTION_DATA_AVAILABLE")) {
    }
    }
    };
    

    2.在广播接收机上接收((

    final Intent intent = new Intent("ACTION_DATA_AVAILABLE");
    intent.putExtra("KEY","YourString");
    sendBroadcast(intent);
    

步骤 1

private void sendLocationBroadcast(Intent intent) {
SharedPreferences pref = getSharedPreferences(Data.SHARED_PREF_NAME, 0);
totaldisplacement = Double.parseDouble(pref.getString(Data.SP_TOTAL_DISTANCE_COVER_TILL, ""));
intent.putExtra(Data.SP_TOTAL_DISTANCE_COVER_TILL, totaldisplacement);
intent.putExtra("latitude", currentlat);
intent.putExtra("longitude", currentlong);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
Log.e("Data", "" + rikshawspeed + " " + currentlat);
}

步骤 2

private void dataSendToMainActivity() {
Intent intent = new Intent("speedExceeded");
sendLocationBroadcast(intent);
}

步骤 3

public BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
distanceFromService = intent.getDoubleExtra(Data.SP_TOTAL_DISTANCE_COVER_TILL, 55);
Double currentLatitude = intent.getDoubleExtra("latitude", 0);
Double currentLongitude = intent.getDoubleExtra("longitude", 0);
//  Toast.makeText(getApplicationContext(), "speed " + distanceFromService + "n" + "Lat Long " + "n" + currentLatitude + "n" + currentLongitude, Toast.LENGTH_SHORT).show();
//  ... react to local broadcast message
Log.e("Main", "" + distanceFromService);
}
};

步骤 4

LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("speedExceeded"));

最新更新