【问题标题】:How to stop GPS BroadcastReceiver如何停止 GPS 广播接收器
【发布时间】:2016-03-10 08:21:21
【问题描述】:

我在我的 GPS 上使用广播接收器来检查用户是否在应用程序工作时禁用了 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 课程:

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);

【问题讨论】:

    标签: java android broadcastreceiver locationmanager android-gps


    【解决方案1】:

    切勿尝试强制关闭您的应用程序。 Android 会处理这个问题。如果你想关闭你的compenent,请使用setComponentEnabledSetting

    【讨论】:

    • 我更新了我的问题。当我第一次开始时,一切都很好。我的广播有效。但是当我关闭应用程序并第二次运行时,广播不起作用。
    【解决方案2】:

    只需在用户禁用 gps 时取消注册广播接收器即可。

     unregisterReceiver(YOUR_BROADCAST);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2017-03-31
      • 2013-03-05
      • 1970-01-01
      相关资源
      最近更新 更多