モノディアンアプリケーションのアクティビティへのアクセスを制限する必要があるという要件があります。だから私は、アプリケーション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他のアプリケーションが使用して署名することを意味=署名 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がを得ました。
許可拒否:インテントを開始{作用= companyXYZ.intent.sayhello.MAIN TYP = vnd.companyXYZ.say.hello/vnd.companyXYZ.activity CMP = IntentSayHello.IntentSayHello/intentsayhello.SayHelloActivity} ProcessRecord {から4094f850 9126:私は私のクライアントアプリケーションが制限されたアプリケーションのSayHelloActivityへのアクセス権を与えられることにしたい場合はDiffKeyHello.DiffKeyHello/10097}(PID = 9126、UID = 10097)が、私は、今intentsayhello.permission.SAYHELLO
が必要です同じキーストア(証明書)を使用してクライアントアプリケーションに署名し、クライアントアプリケーションのAndroidManifest.xmlに次のようにも書いています。
...
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="intentsayhello.permission.SAYHELLO" />
</manifest>
しかし、私はこのの両方を行った際に、クライアントアプリケーションは、まだSayHelloActivityを呼び出すことができなかったと同じに、SecurityExceptionがスローされます。
私はこの問題の方向性/解決策を知りたいと思います。 おかげで周りのグーグル後