2011-02-17 30 views
8

我需要能够打开和关闭GPS接收器,并且WRITE_SECURE_SETTINGS需要能够访问安全设置。我已经搜索了很多,我看到的每个答案都非常多,说系统/固件之外的任何应用程序都无法获得这种认可。如何获得我的android应用程序的可怕WRITE_SECURE_SETTINGS权限?

但是,那简直是不真实的。市场上有几款应用程序完全符合我的要求(关于GPS),但还有一些应用程序具有WRITE_SECURE_SETTINGS权限。例如:

Extended Controls

SwitchPro

Profile Flow

那么,如何才能做到这一点?

回答

23

我需要能够打开和关闭

出于保护隐私的原因,GPS接收器,如果不出意外,启用或禁用任何类型的定位追踪的需要是完全在手中用户通过信任的应用程序,而不是任意第三方的请求。因此,如果您希望启用和禁用GPS,请创建您自己的固件,以完成您所需的任何操作,并在您希望的任何设备上加载该固件。或者,将您的更改贡献给现有的固件模块(例如Cyanogen)。

WRITE_SECURE_SETTINGS需要能够访问安全设置

正确的。

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

正确。

但是,那简直是不真实的。

不,这是非常真实的。

目前市场上的一些应用程序,正是我想要做才能(在关于GPS)

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

但也有有WRITE_SECURE_SETTINGS权限

没有一堆多,有一帮谁他们。你可以要求任何你想要的权限。你要求的是这些列表中显示的内容。你得到是一个不同的故事。

+0

此外,FWIW,扩展控件(这是我购买的)不直接开启或关闭GPS,而是需要你的位置和安全设置页面自行切换。 – CommonsWare 2011-02-17 20:34:17

+0

但在我的应用程序中,用户会选择该选项 - 只是试图保存一大堆首先将其设置为设置的步骤。如果在“位置和安全”中有一个额外的设置(当然带有严厉措辞的警告),那么允许外部应用程序控制GPS会不会更有意义?这样用户可以选择安全性的易用性,反之亦然。 – user496854 2011-02-17 21:42:50

+0

我对扩展控件感到抱歉,我的意思是Power Controls plus。在过去的几周里,我经历了一系列的混乱。 – user496854 2011-02-17 21:44:56

0

就这样。您可以访问每个移动设备上的小部件。

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

试试这个ADB命令,这将在应用程序运行时给予许可

adb shell pm grant package android.permission.WRITE_SECURE_SETTINGS 

步骤如下:

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

  2. 执行上面的adb命令

  3. 安装APK

它的工作对我来说...

相关问题