私のアプリケーションは、android:protectionLevel="signature" でパーミッションを定義しています。
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="signature" />
私の意図は、私の署名済みアプリによってのみ起動できるアプリケーション モジュールを作成することです。これらのアプリケーション モジュールには、そのアクティビティに android:permission があります。これはうまくいきます。しかし...サードパーティのアプリは、このように同じ権限名を使用して保護レベルを通常に変更できます
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="normal" />
私のアプリが最初にインストールされている場合、他のアプリが許可を上書きするのを防ぐことができます。ただし、アプリをアンインストールしてから自分のアプリをインストールすると、権限が再定義されます。
他のアプリケーションが同じ権限名を使用するのを防ぐことは可能ですか?たとえば、権限にアプリケーション パッケージのような一意の ID を与えることはできますか?
マニフェストは暗号化されていますが、このパーミッションを必要とするアクティビティを開始しようとすると、誰でも log cat のパーミッション名を読み取ることができます (必要なパーミッション名を持つ例外がスローされます)。