如何停止 GPS BroadcastReceiver
How to stop GPS BroadcastReceiver
我在我的 GPS 上使用 broadcastreceiver 检查用户是否在应用程序运行时禁用了 GPS。如果用户禁用,则会显示一个对话框,其中包含需要 GPS 的信息。
这是我在清单中的示例:
<receiver android:name=".BroadCastGPS">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
这是我的 BroadCastGPS class:
public class BroadCastGPS extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if(!gpsStatus.GPS) {
Intent pushintent = new Intent(context, gpsStatus.class);
pushintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(pushintent);
}
} else {
if(gpsStatus.GPS) {
Intent pushintent = new Intent(context, Online.class);
pushintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(pushintent);
}
}
}
}
}
我的问题是,当用户关闭此应用程序时,几秒钟后显示信息对话框,表明需要 GPS。如何在关闭应用程序之前停止广播?我尝试使用 System.exit(0),终止进程,但它不起作用。
此示例在关闭应用程序时调用:
PackageManager pm = mContext.getPackageManager();
ComponentName compName =
new ComponentName(mContext,
BroadCastGPS.class);
pm.setComponentEnabledSetting(
compName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
切勿尝试强行关闭您的应用程序。 Android 负责处理。如果你想关闭你的compenent使用setComponentEnabledSetting
在用户禁用 gps 时取消注册 broadcastreceiver。
unregisterReceiver(YOUR_BROADCAST);
我在我的 GPS 上使用 broadcastreceiver 检查用户是否在应用程序运行时禁用了 GPS。如果用户禁用,则会显示一个对话框,其中包含需要 GPS 的信息。
这是我在清单中的示例:
<receiver android:name=".BroadCastGPS">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
这是我的 BroadCastGPS class:
public class BroadCastGPS extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if(!gpsStatus.GPS) {
Intent pushintent = new Intent(context, gpsStatus.class);
pushintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(pushintent);
}
} else {
if(gpsStatus.GPS) {
Intent pushintent = new Intent(context, Online.class);
pushintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(pushintent);
}
}
}
}
}
我的问题是,当用户关闭此应用程序时,几秒钟后显示信息对话框,表明需要 GPS。如何在关闭应用程序之前停止广播?我尝试使用 System.exit(0),终止进程,但它不起作用。
此示例在关闭应用程序时调用:
PackageManager pm = mContext.getPackageManager();
ComponentName compName =
new ComponentName(mContext,
BroadCastGPS.class);
pm.setComponentEnabledSetting(
compName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
切勿尝试强行关闭您的应用程序。 Android 负责处理。如果你想关闭你的compenent使用setComponentEnabledSetting
在用户禁用 gps 时取消注册 broadcastreceiver。
unregisterReceiver(YOUR_BROADCAST);