как дать Dynami c android .permission.WRITE_SETTINGS разрешение на доске без UserInterface - PullRequest
0 голосов
/ 06 февраля 2020

Я установил приложение как пользовательский режим и не рутировал. Следовательно, некоторые из android .permissions, такие как разрешение на запись, игнорируются и не устанавливаются. смог определить из пакетов. xml, а также из команды "adb shell dumpsys package"

Я хочу установить разрешение на запись в приложение, которое я установил на устройство. У меня есть доступ к android коду ОС, есть ли способ предоставить разрешение? либо по отдельному изменению ??

Примечание: устройство не является пользовательским интерфейсом (пользовательский интерфейс)

Пожалуйста, помогите !!

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> 

1 Ответ

0 голосов
/ 06 февраля 2020

используйте эту команду adb shell pm grant you package android.permission.WRITE_SECURE_SETTINGS, и только системное приложение и корневое приложение могут записать настройку, но эта команда поможет вам записать настройку.

   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" />
...