2016-12-15 24 views
1

背景:私は新しいTilesとTileServiceを試していましたが、CyanogenMod.からUSB Tethering tileを再作成することに決めました。許可は変更可能なアクセス許可の種類ではありません

は問題:このような方法の一つは、

java.lang.SecurityException: You either need MANAGE_USERS or CREATE_USERS permission to: query userは、だから私はマニフェストが、私は

「パーミッションが変更許可のタイプではありません」それは返すpm grantを使用するたびに権限を追加しました原因isTetheringSupported()ですthisによると、デバッグキーで署名したときにこのエラーが発生しないはずです。

質問:どうすればこれらの権限を取得できますか?

+0

あなたはそれに署名しましたか? –

+0

@KhalilMはい私はしました – Bhav

答えて

1

UPDATE:経由 XposedPackageMangerにフックして、以下のチェックを削除し、成功したものは何でも許可を与えるpm grant...を行うことが可能です。誰かがこれを見て、以下のコメントをするのに助けが必要な場合は、お手伝いします。あなたのアプリが開発モードである場合

OLD ANSWER ソース

boolean isDevelopment = 
      ((bp.protectionLevel&PermissionInfo.PROTECTION_FLAG_DEVELOPMENT) != 0); 

でこのコードはチェックしません。要求しているアクセス許可にprotectionLevel属性(マニフェストで設定)がdevelopmentに設定されているかどうかを確認します。 そして、あなたが取得しようとしているパーミッションは、このチェックを渡すことができマニフェストで宣言された任意の要素を持っていないようです:

if (!isNormal && !isDangerous && !isDevelopment) { 
     throw new SecurityException("Permission " + bp.name 
       + " is not a changeable permission type"); 
    } 

ちょうど別の許可を得て、このつまずきました。悲しいことにそれを手に入れる方法がないようです。

+0

'開発'の保護レベルについては何も見つかりませんでしたが、 'CREATE_USERS'と' MANAGE_USERS'は保護レベルが 'signature'に設定されているので、 platform.x509.pem'と 'platform.pk8' [ここ](https://github.com/android/platform_build/tree/master/target/product/security)にアクセスして権限を取得します。 [ソース](https://stackoverflow.com/questions/3635101/how-to-sign-android-app-with-system-signature) – Bhav

+0

@Bhavはいこれらの2つのアクセス許可は '開発されていないので保護できません上記の 'if'ステートメントでのチェックがあなたに例外を投げるので、例えばadbを通してそれらにアクセスしてください。保護レベルが 'signature'の場合は、添付された投稿の場合にのみその権限を付与することができます。 –

関連する問題