【问题标题】:Turn on Unknown Sources setting programmatically以编程方式打开未知来源设置
【发布时间】:2013-10-02 07:43:53
【问题描述】:

我想在无根设备上以编程方式打开未知来源设置。我已经检查了这段代码:

boolean success;
int result = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.INSTALL_NON_MARKET_APPS, 0);
if (result == 0) {
    success = Settings.Secure.putString(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, "1");    
}

并具有以下权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

但在执行时,它会显示permission denied: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS,我已经给出了。

我已通过设备管理员权限制作了此应用程序。

【问题讨论】:

  • 那么 android 的文档是怎么说这个权限的?

标签: android performance android-service


【解决方案1】:

但在执行时,它说权限被拒绝:写入安全设置需要我已经给出的 android.permission.WRITE_SECURE_SETTINGS。

您不能拥有该权限,除非您使用与固件签名相同的签名密钥进行签名,或者如果您安装在系统分区上(例如,由 root 设备用户)。

我已通过设备管理员权限制作了此应用程序。

这与以编程方式修改安全设置无关。

【讨论】:

    【解决方案2】:

    要做到这一点,你必须有根。如果您的应用是为 root 用户制作的,您可以使用上面的代码:

    Process p = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(p.getOutputStream());
        os.writeBytes("settings put global install_non_market_apps 1");
        os.writeBytes("exit\n");
        os.flush();
    

    但问题是它并不兼容所有安卓版本。

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 2013-10-31
      • 2013-02-19
      • 2017-08-21
      • 2019-04-16
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多