web-dev-qa-db-ja.com

マニフェストに追加した場合でもWRITE_SECURE_SETTINGS権限エラー

マニフェストに「Android.permission.WRITE_SECURE_SETTINGS」を追加しました。しかし、それでもエラーメッセージが表示されます-「WRITE_SECURE_SETTINGS」が必要です。

私はこれについて多くの話をしてきましたが、この設定はサードパーティのソフトウェアでは禁止されています。

アプリケーションを追加してこの権限を取得できるのは他の方法ですか?

私はこのadbコマンドを見ましたが、これを使用してアプリケーションをデバイスに追加する方法はあまりよくありません。以下のコマンドは、読み取り専用ファイルシステムによるコピーに失敗したため、使用する前にルートをデバイスに要求する必要がありますか?

adb remount
adb Push app.apk /system/app/
11
Louisth

まず、以前に読んだように、WRITE_SECURE_SETTINGSは[〜#〜] not [〜#〜]アプリケーションで使用できます!そのため、rootビルドか本番ビルドかに関係なく、この権限を使用することはできません。

したがって、この設定を有効にする場合は、必要なことを実行する独自のファームウェアを作成し、そのファームウェアを任意のデバイスにロードします。または、変更を既存のファームウェアMOD(Cyanogenなど)に提供します。

他のいくつかのアプリケーションは、Reflectionのような手法を使用してJavaを使用し、APIを介して公開されていない関数にアクセスします。おそらく同じことを試すことができます。

次に、adb remountは、電話がルート権限を取得されていないか、ファームウェアがデフォルトで有効にしない限り、製品ビルドではそのままでは機能しません。

12
Royston Pinto

私は最近、まさにこれに苦労しました。私のクライアントは、デバイスが充電中(ワイヤレス充電器)にNFC=オフにし、充電器から取り外したときにオンにするアプリを望んでいました。Nexus7でKitKatを実行していました。 WRITE_SECURE_SETTINGSはマニフェストで、アプリは/system/app/、それは機能しません。

結局、4.4では追加のセキュリティが追加されました。ただし4.3では、次の3つの条件に当てはまる場合に機能します。

  1. マニフェストにWRITE_SECURE_SETTINGS
  2. アプリは/system/app/
  3. パッケージはキー(任意のキー)で署名されています

私は 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をインストールし、システムアプリムーバーを使用して所定の場所に移動しました。これにより、デバイスが再起動しました。それは完全に機能しました。お役に立てれば。

12
David S.

WRITE_SECURE_SETTINGS権限はadbを介して付与でき、このアプローチはrootを必要としないことを付け加えたいと思います。ここにコマンドがあります:

adb Shell pm grant your.package.name Android.permission.WRITE_SECURE_SETTINGS
3
JustHobby

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/

3
rfreitas

私もこの状況に遭遇し、以下のルールに従います。1.マニフェストにWRITE_SECURE_SETTINGSを追加します2.独自のファームウェアを作成します3. LOCAL_CERTIRICATE:=プラットフォームを追加します

0
Bill Chan