如何获得我的Android应用程序的可怕WRITE_SECURE_SETTINGS权限?

时间:2011-02-17 20:22:46

标签: android permissions gps

我需要能够打开和关闭GPS接收器,并且需要WRITE_SECURE_SETTINGS才能访问安全设置。我搜索了很多,我看到的每个答案都说,系统/固件之外的任何应用程序都无法获得该许可。

然而,这完全是不真实的。市场上有几个应用程序正是我正在尝试的(关于GPS),但还有更多具有WRITE_SECURE_SETTINGS权限的应用程序。例如:

Extended Controls

SwitchPro

Profile Flow

那么,怎么办呢?

3 个答案:

答案 0 :(得分:23)

  

我需要能够打开和关闭GPS接收器

出于隐私原因,如果不出意外,启用或禁用任何类型的位置跟踪需要通过受信任的应用程序完全由用户使用,而不是应任意第三方的请求。

因此,如果您希望启用和禁用GPS,请创建自己的固件以满足您的需要,并在您希望的任何设备上加载该固件。或者,将您的更改提供给现有固件模块(例如,Cyanogen)。

  

WRITE_SECURE_SETTINGS需要能够访问安全设置

正确。

  

我已经搜索了很多,我看到的每个答案都说,系统/固件之外的任何应用程序都无法获得该许可。

正确。

  

然而,这完全是不真实的。

不,这是真的。

  

市场上有几款应用正是我正在努力的(关于GPS)

他们发现了一个安全漏洞。我将采取措施帮助确保修复这个漏洞。

  

但是还有更多具有WRITE_SECURE_SETTINGS权限的

不,有一群人要求代替他们。你可以要求任何你想要的许可。您要求的是这些列表中显示的内容。你得到的是另一回事。

答案 1 :(得分:16)

尝试使用此adb命令,这将在应用程序运行时提供权限

adb shell pm grant package android.permission.WRITE_SECURE_SETTINGS

步骤:

  1. 连接您的设备(确保启用USB调试)

  2. 执行以上adb命令

  3. 安装apk

  4. 它对我有用......

答案 2 :(得分:1)

就是这样。您可以访问每部手机拥有的小部件。

public void ativaGPS() {
        LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            Intent intent = new Intent();
            intent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
            intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
            intent.setData(Uri.parse("3"));
            sendBroadcast(intent);
        }