Monodroidアプリケーションのアクティビティへのアクセスを制限する必要があるという要件があります。したがって、アプリケーションIntentSayHelloがSayHelloActivityと呼ばれるアクセス制限されたアクティビティを持つスパイクを試しました。最初のステップとして、アプリケーションのAndroidManifest.xmlでパーミッションタグを次のように定義しました。
...
...
</application>
<permission
android:name="intentsayhello.permission.SAYHELLO"
android:protectionLevel="signature" android:label="@string/permlbl_restricted"
android:description="@string/permdesc_restricted">
</permission>
</manifest>
私はprotectionLevel= signignを使用していることに注意してください。これは、IntentSayHelloと同じ証明書で署名された他のアプリケーションは、制限されたアクティビティにのみアクセスできることを意味します。
ここで、SayHelloActivityを次のようにコーディングしました。
[Activity(Label = "SayHelloActivity", MainLauncher = true, Icon = "@drawable/icon", Permission = "intentsayhello.permission.SAYHELLO")]
[IntentFilter(new string[] { "companyXYZ.intent.sayhello.MAIN" },Categories = new string[]{Intent.CategoryDefault},
DataMimeType = "vnd.companyXYZ.say.hello/vnd.companyXYZ.activity")]
public class SayHelloActivity : Activity
{
.....
.....
}
この後、暗黙のインテントを介してIntentSayHelloのSayHelloActivityを呼び出してクライアントアプリケーションでテストしたところ、期待どおりにSecurityExceptionが発生しました。
許可の拒否:ProcessRecord {4094f850 9126:DiffKeyHello.DiffKeyHello 10097}(pid = 9126、uid = 10097)にはintentsayhello.permission.SAYHELLOが必要です
クライアントアプリケーションに制限付きアプリケーションのSayHelloActivityへのアクセスを許可する場合は、同じキーストア(証明書)を使用してクライアントアプリケーションに署名し、クライアントアプリケーションのAndroidManifest.xmlに次のように記載する必要があります。
...
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="intentsayhello.permission.SAYHELLO" />
</manifest>
しかし、これを両方実行しても、クライアントアプリケーションはSayHelloActivityを呼び出すことができず、同じSecurityExceptionがスローされます。
この問題の方向性/解決策を知りたいのですが。ありがとう