Androidマニフェストにこの権限を追加したい:
<uses-permission Android:name="Android.permission.MODIFY_PHONE_STATE" />
しかし、この許可をマニフェストに貼り付けた後、赤い下線がテストされ、次のように表示されます。
許可はシステムアプリにのみ付与されます
私に何ができる?
MODIFY_PHONE_STATE
許可はシステムアプリにのみ付与されます。
参考までに、2種類のAndroidアプリ:システムとユーザー
ユーザーアプリは、Google Playストア、Amazonアプリストア、またはサイドローディングを介した通常のアプリインストールのみです。これらは、Android電話の/ dataパーティションに配置されます。これは、ユーザーデータとアプリで使用できる内部メモリの一部です。
システムアプリは、基本的にROMがプリインストールされているアプリです。標準のAndroidユーザー環境では、ユーザーは/ systemパーティションへの書き込みアクセス権を持たないため、システムアプリを直接インストールまたはアンインストールすることはできません。
Androidデバイスにシステムアプリとしてアプリをインストールするには、デバイスをルート化するか、カスタムリカバリをインストールする必要があります(または両方).
つまり、有効なコードがあり、コンパイルが機能するため、そのエラーは実際には間違っています。代わりに警告を出した方が良いでしょう。 Eclipseでは、簡単に修正できます。ただ行く:
ウィンドウ->設定-> Android-> Lint Error Checking。
リストからProtectedPermission
を検索し、重大度をerror以外(infoなど)に設定します。これにより、プロジェクトはコンパイルされます。
MODIFY_PHONE_STATE
はシステムのみの許可です。システムアプリは、システムフォルダーにプリインストールされているか、製造元がセキュリティ証明書を使用してコンパイルしています。
したがって、これを実行しようとしている場合は、サポートされなくなったAPIを使用しようとしています。 Androidバージョン2.3+では着信コールを監視できますが、ブロックは許可されていません(投稿したリンクからあなたがやろうとしていることだと思います)。
フォローする必要がある場合のAndroidの問題: Issue 15022 および Issue 14789
このエラーは、マニフェストを変更するとSDK 19以降で表示されます。 Project Clean and Buildを実行します。このエラーはクリアされるはずです。
プロジェクトをきれいにするだけで、次のようになります:
プロジェクト>クリーン...
これはシステムレベルの許可であるため、デバイス開発者はこれを許可しないため、アプリケーション開発ツールもこれに対して警告するため、
単純にプロジェクトをきれいにし、これを再構築する
許可には4つのタイプがあります
Regular
Dangerous
Signed
Signed or System
The first two can be used by Simple Apps
他の2つは、フレームワークでビルドされたアプリでのみ使用できます
のリストからProtectedPermissionを見つけます
Window -> Preferences -> Android -> Lint Error Checking.
重大度をエラー以外の情報(たとえば、情報)に設定します。これにより、プロジェクトはコンパイルされます。