2010-12-31 4 views
7

Androidアプリでアクセス許可を定義し、他のサードパーティのアプリに使用させます。この権限は、モジュールの呼び出しを制限するために使用されます。つまり、Androidシステムで定義されたシステム権限、android.permission.INTERNETなどと同様に、サードパーティのアプリケーションは自分のモジュールを呼び出すための適切なアクセス権を要求する必要があります。Androidで使用するサードパーティ製アプリケーションのアクセス許可を定義します。

私のテストでは、私のアプリで「my.apps.permission.my_permission」と言うパーミッションを定義し、それをエミュレータにインストールしました。私の活動のいくつかでは、android:permission = "my.apps.permission.my_permission"プロパティが追加されています。このプロパティは、自分のアクティビティを呼び出すアプリケーションに適切な権限 "my.apps.permission.my_permission"が必要であることを強制します。テストアプリケーションで、AndroidManifest.xmlのアクセス許可を要求します。<uses-permission android:name="my.apps.permission.my_permission" />

テストアプリケーションでは、startActivity()を呼び出すと、私の許可が必要なアクティビティを呼び出す問題が発生します。拒否されました。しかし、テストアプリで同じ名前のパーミッションを定義しても、すべて正常に動作します。

そして、以下が私の結論です:

1)それはと思われる、私のアプリ、「my.apps.permission.my_permission」で定義された権限は、他のサードパーティ製のアプリには表示されません。 Androidシステムで定義されているように他のアプリが自分の権限を使用できるように、そのアプリを表示するにはどうすればいいですか?

2)でも、Androidは名前が競合するユーザ定義のアクセス権をチェックしません(テストアプリで名前を「android.permission.INTERNET」に設定してテストし、システム定義の権限をオーバーライドします私のアプリには "android.permission.INTERNET"が必要ですが、それでもすべて正常に動作します)。もしそうなら、他のすべてのアプリは私のモジュールが要求するのと同じ名前のパーミッションを定義し、私のアプリを不正にすることができます。そうですか?

誰でも手助けできますか? ありがとう!

+0

あなたが探しているものが見て、それは可能性があります http://stackoverflow.com/questions/4425940/creating-your-own-permissions/21611769#21611769 – SuperManEver

答えて

7

私は答えを得た。 他のアプリの使用許可を定義した自分のアプリは、自分のアクセス許可を使用する他のアプリより先にインストールする必要があります。それ以外の場合は、アクセス許可を使用するには、それらのアプリを再インストールする必要があります。その他の操作やコードは必要ありません。<uses-permission android:name="my.apps.permission.my_permission" />、他のシステム定義のパーミッションと同じです。

複数のアプリで同じ名前のアクセス許可を定義し、互いに競合することがあります。最初にインストールされたアプリは競合するアクセス権名を占め、他のアプリは元の権限を上書きしたり変更したりしません。

+1

ねえMaratSafinWangは、あなたがのためのサンプルコードを与えることができます許可? –

+0

こんにちは、参考までに - https://developer.android.com/guide/topics/manifest/permission-element.htmlをご利用ください。 –

関連する問題