我已经以用户模式安装了应用程序,但没有root用户。因此,某些android.permissions(如写入权限)将被忽略并且未设置。能够从packages.xml以及命令“ adb shell dumpsys package”中进行识别
我想对我安装到设备上的应用程序设置写权限。 我可以访问android OS代码,有没有办法授予权限?要么通过变更政策?
注意:设备不是UI(用户界面)
请帮助!
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=<package-name>
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application android:label="@string/app_name" >
<service android:name=<service-name>
<intent-filter >
---
</intent-filter>
</service>
</application>
</manifest>
答案 0 :(得分:1)
在有根设备上,您可以使用以下命令:
adb shell appops set foo.bar.package WRITE_SETTINGS allow
答案 1 :(得分:0)
使用此命令adb shell pm grant you package android.permission.WRITE_SECURE_SETTINGS
,只有系统应用程序和root用户应用程序可以写入设置,但是此命令可帮助您写入设置。
public void setSettingsAutomaticDateTimeIfNeeded() {
String timeZoneSettings = android.provider.Settings.Global.getString(
this.getContentResolver(),
android.provider.Settings.Global.AUTO_TIME_ZONE);
Log.e(TAG, "auot update check true");
if (timeZoneSettings.contentEquals("0")) {
android.provider.Settings.Global.putString(
this.getContentResolver(),
Settings.Global.AUTO_TIME_ZONE, "1");
Log.e(TAG, "Auto update checked make true");
}
String timeSettings = android.provider.Settings.Global.getString(
this.getContentResolver(),
android.provider.Settings.Global.AUTO_TIME);
Log.e(TAG, "auot update check true");
if (timeSettings.contentEquals("0")) {
android.provider.Settings.Global.putString(
this.getContentResolver(),
Settings.Global.AUTO_TIME, "1");
Log.e(TAG, "Auto update checked make true");
}
}
并添加此inot清单
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS"
tools:ignore="ProtectedPermissions" />