web-dev-qa-db-ja.com

マニフェストでは、許可はシステムアプリにのみ付与されます

Androidマニフェストにこの権限を追加したい:

<uses-permission Android:name="Android.permission.MODIFY_PHONE_STATE" />

しかし、この許可をマニフェストに貼り付けた後、赤い下線がテストされ、次のように表示されます。

許可はシステムアプリにのみ付与されます

私に何ができる?

25
Reza_Rg

MODIFY_PHONE_STATE許可はシステムアプリにのみ付与されます。

参考までに、2種類のAndroidアプリ:システムとユーザー

ユーザーアプリは、Google Playストア、Amazonアプリストア、またはサイドローディングを介した通常のアプリインストールのみです。これらは、Android電話の/ dataパーティションに配置されます。これは、ユーザーデータとアプリで使用できる内部メモリの一部です。

システムアプリは、基本的にROMがプリインストールされているアプリです。標準のAndroidユーザー環境では、ユーザーは/ systemパーティションへの書き込みアクセス権を持たないため、システムアプリを直接インストールまたはアンインストールすることはできません。

Androidデバイスにシステムアプリとしてアプリをインストールするには、デバイスをルート化するか、カスタムリカバリをインストールする必要があります(または両方).

つまり、有効なコードがあり、コンパイルが機能するため、そのエラーは実際には間違っています。代わりに警告を出した方が良いでしょう。 Eclipseでは、簡単に修正できます。ただ行く:

ウィンドウ->設定-> Android-> Lint Error Checking。

リストからProtectedPermissionを検索し、重大度をerror以外(infoなど)に設定します。これにより、プロジェクトはコンパイルされます。

65
Caner

MODIFY_PHONE_STATEはシステムのみの許可です。システムアプリは、システムフォルダーにプリインストールされているか、製造元がセキュリティ証明書を使用してコンパイルしています。

したがって、これを実行しようとしている場合は、サポートされなくなったAPIを使用しようとしています。 Androidバージョン2.3+では着信コールを監視できますが、ブロックは許可されていません(投稿したリンクからあなたがやろうとしていることだと思います)。

フォローする必要がある場合のAndroidの問題: Issue 15022 および Issue 14789

6
gsb

このエラーは、マニフェストを変更するとSDK 19以降で表示されます。 Project Clean and Buildを実行します。このエラーはクリアされるはずです。

4
Pal

プロジェクトをきれいにするだけで、次のようになります:

プロジェクト>クリーン...

2
ROR

これはシステムレベルの許可であるため、デバイス開発者はこれを許可しないため、アプリケーション開発ツールもこれに対して警告するため、

単純にプロジェクトをきれいにし、これを再構築する

1
Ajay Pandya

許可には4つのタイプがあります

Regular
Dangerous
Signed
Signed or System

The first two can be used by Simple Apps他の2つは、フレームワークでビルドされたアプリでのみ使用できます

0

のリストからProtectedPermissionを見つけます

Window -> Preferences -> Android -> Lint Error Checking.

重大度をエラー以外の情報(たとえば、情報)に設定します。これにより、プロジェクトはコンパイルされます。

0
Khan