0

我一直在尝试构建一个 android 应用程序,当用户以超过 20MPH 的速度行驶时,它不允许设备用户从设备上的任何位置更改/编辑 GPS 设置。

一旦用户超过 20MPH,用户将无法从通知栏或内部设置禁用 GPS 设置。

如何使用系统超级管理员/管理员权限来处理 Android App 中 GPS 的启用/禁用事件?请帮忙。

提前致谢。

4

3 回答 3

0

为 GPS 启用或禁用注册一个侦听器。

public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

    public void onProviderEnabled(String provider) {
        Toast.makeText(this, "Enabled new provider " + provider,
                Toast.LENGTH_LONG).show();

    }

    public void onProviderDisabled(String provider) {
        Toast.makeText(this, "GPS disconnected", Toast.LENGTH_LONG);
            Toast.makeText(getApplicationContext(), "Connected",
                    Toast.LENGTH_LONG);


        Toast.makeText(this, "Please Switch on GPS." + provider,
                Toast.LENGTH_LONG).show();
    }

并添加它以监听 GPS 状态的变化

locationManager.addGpsStatusListener(gpsStatusListener)

当 USER 禁用 GPS 时,您将通过代码启用它。启用 GPS 的代码是

        Settings.Secure.setLocationProviderEnabled(contentResolver, LocationManager.GPS_PROVIDER,true);

使用适当的权限来执行此操作。

于 2013-09-12T17:17:41.007 回答
0
  1. 启用/禁用 GPS 是设计上的异步过程。您可以侦听禁用和重新启用 GPS 的尝试。但是您无法阻止实际禁用。GPS 将关闭一秒钟或几秒钟。

或者,您必须设计自己的 ROM,实现某种 GPS 锁定,仅适用于您自己的应用程序。

  1. 要获得超级管理员权限,您需要 a) root 和 b) 设计安装在 /system/app 目录中的小型存根应用程序。

作为上述所有示例,您可以从https://github.com/sms2000/GPSToggler获取我的 GPSToggler 。它或多或少地工作,可以根据您的需要采用。

于 2013-09-13T12:43:36.487 回答
0

在清单文件中使用这些权限

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
于 2013-09-11T12:43:36.867 回答