マニフェストに「Android.permission.WRITE_SECURE_SETTINGS」を追加しました。しかし、それでもエラーメッセージが表示されます-「WRITE_SECURE_SETTINGS」が必要です。
私はこれについて多くの話をしてきましたが、この設定はサードパーティのソフトウェアでは禁止されています。
アプリケーションを追加してこの権限を取得できるのは他の方法ですか?
私はこのadbコマンドを見ましたが、これを使用してアプリケーションをデバイスに追加する方法はあまりよくありません。以下のコマンドは、読み取り専用ファイルシステムによるコピーに失敗したため、使用する前にルートをデバイスに要求する必要がありますか?
adb remount
adb Push app.apk /system/app/
まず、以前に読んだように、WRITE_SECURE_SETTINGSは[〜#〜] not [〜#〜]アプリケーションで使用できます!そのため、rootビルドか本番ビルドかに関係なく、この権限を使用することはできません。
したがって、この設定を有効にする場合は、必要なことを実行する独自のファームウェアを作成し、そのファームウェアを任意のデバイスにロードします。または、変更を既存のファームウェアMOD(Cyanogenなど)に提供します。
他のいくつかのアプリケーションは、Reflection
のような手法を使用してJavaを使用し、APIを介して公開されていない関数にアクセスします。おそらく同じことを試すことができます。
次に、adb remount
は、電話がルート権限を取得されていないか、ファームウェアがデフォルトで有効にしない限り、製品ビルドではそのままでは機能しません。
私は最近、まさにこれに苦労しました。私のクライアントは、デバイスが充電中(ワイヤレス充電器)にNFC=オフにし、充電器から取り外したときにオンにするアプリを望んでいました。Nexus7でKitKatを実行していました。 WRITE_SECURE_SETTINGS
はマニフェストで、アプリは/system/app/
、それは機能しません。
結局、4.4では追加のセキュリティが追加されました。ただし4.3では、次の3つの条件に当てはまる場合に機能します。
WRITE_SECURE_SETTINGS
/system/app/
私は http://www.wugfresh.com/nrt/ から素晴らしいNexus Root Toolkit(NRT)を使用してデバイスをルート化し、次にBusyBoxとシステムアプリムーバーをインストールしました:
https://play.google.com/store/apps/details?id=stericson.busyboxhttps://play.google.com/store/apps/details?id= de.j4velin.systemappmover
カスタム署名済みAPKをインストールし、システムアプリムーバーを使用して所定の場所に移動しました。これにより、デバイスが再起動しました。それは完全に機能しました。お役に立てれば。
WRITE_SECURE_SETTINGS権限はadbを介して付与でき、このアプローチはrootを必要としないことを付け加えたいと思います。ここにコマンドがあります:
adb Shell pm grant your.package.name Android.permission.WRITE_SECURE_SETTINGS
WRITE_SECURE_SETTINGS特権を必要とする私が使用したAPIの場合、これをマニフェストに含める必要がありました。
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
...
coreApp="true"
Android:sharedUserId="Android.uid.system">
<uses-permission Android:name="Android.permission.WRITE_SECURE_SETTINGS"/>
...
ref: https://github.com/Android/platform_packages_apps_settings/blob/master/AndroidManifest.xml
また、アプリケーションをシステムアプリとして実行する必要がありました(/ system/appの下)。以下がその方法です: http://www.addictivetips.com/mobile/how-to-install-any-app-as-system-app-on-Android/
私もこの状況に遭遇し、以下のルールに従います。1.マニフェストにWRITE_SECURE_SETTINGSを追加します2.独自のファームウェアを作成します3. LOCAL_CERTIRICATE:=プラットフォームを追加します