0

カメラや Wi-Fi などのハードウェア部品を使用する Android アプリを開発しています。マニフェストで HARDWARE_TEST 権限を使用しています。

<uses-permission android:name="android.permission.HARDWARE_TEST">

私はそれで問題を抱えたことは一度もありませんが、突然、ファイルを日食してマニファイすると、次の行に新しいエラーが表示されます。

「権限はシステムアプリにのみ付与されます」

私がそれを修正しなければならない唯一の方法は、この行を削除することです。

なぜこのエラーですか?? どうすれば修正できますか?ありがとう

編集:

私は解決策を見つけ、自分の質問に答えました:

私の問題は android:targetSdkVersion のマニフェストの値で、これは 15 で、proyect ビルド ターゲットは API レベル 16 (Android 4.1.2) でチェックされました。

<uses-sdk
    android:minSdkVersion="2"
    android:targetSdkVersion="15" />

そのため、android:targetSdkVersion の値を 16 に変更し、Proyect プロパティ > Android > "Proyect Buid Target" も 16 にチェックしました。

4

1 に答える 1

0

Android のアクセス許可には、Normal、Dangerous、System、および signatureOrSystem のいくつかのアクセス許可保護レベルがあります。

signatureOrSystem アクセス許可は、システム アプリケーションにのみ付与できます。署名レベルのアクセス許可の場合:

要求元のアプリケーションが、アクセス許可を宣言したアプリケーションと同じ証明書で署名されている場合にのみ、システムが許可するアクセス許可。証明書が一致する場合、システムは、ユーザーに通知したり、ユーザーの明示的な承認を求めたりすることなく、アクセス許可を自動的に付与します。

権限定義の構文は次のとおりです。

HARDWARE_TEST パーミッションの定義は次のとおりです。

<!-- Allows access to hardware peripherals.  Intended only for hardware testing -->
<permission android:name="android.permission.HARDWARE_TEST"
    android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
    android:protectionLevel="signature"
    android:label="@string/permlab_hardware_test"
    android:description="@string/permdesc_hardware_test" />

これは Android 4.2 での署名許可であるため、同じ署名 (ベンダーによって署名された) を持つアプリにのみ付与できます。したがって、アプリケーションはその許可を要求できません。

ハードウェアを直接操作したい場合は、ルート化されたデバイスが必要になる場合があります。

于 2013-03-08T13:31:33.527 に答える