2010-12-31 22 views
7

Chcę zdefiniować uprawnienia w mojej aplikacji na Androida i pozwolić innym aplikacjom innych firm na korzystanie. To uprawnienie służy do ograniczenia wywoływania moich modułów. Oznacza to, że aplikacje innych firm muszą żądać odpowiedniego uprawnienia do wywoływania mojego modułu, podobnie jak przy użyciu uprawnień systemowych zdefiniowanych przez system Android, Android.permission.INTERNET lub tak.Zdefiniuj uprawnienie dla aplikacji innych firm do używania w Androidzie

W moim teście zdefiniowałem uprawnienie w mojej aplikacji, powiedz "my.apps.permission.my_permission", a następnie zainstaluj je na emulatorze. W niektórych moich działaniach dodaje się właściwość android: permission = "my.apps.permission.my_permission". Ta właściwość wymusza na aplikacjach wywołujących moje działania odpowiednie uprawnienia "my.apps.permission.my_permission". Następnie w aplikacji testowej poproś o pozwolenie w AndroidManifest.xml, <uses-permission android:name="my.apps.permission.my_permission" />

Problem polega na tym, że w aplikacji testowej, która wywoła moje wymagane przeze mnie czynności, gdy zadzwonię do funkcji startActivity(), otrzymałem SecurityException: Permission Odmówiono. Ale jeśli zdefiniowałem uprawnienie o tej samej nazwie w aplikacji testowej, wszystko działa poprawnie.

I Poniższe są moje wnioski:

1) Wydaje się, że uprawnienie zdefiniowane w moim app „my.apps.permission.my_permission”, nie jest widoczny dla innych aplikacji firm trzecich. Jak sprawić, by było widoczne, aby inne aplikacje mogły korzystać z mojego pozwolenia, podobnie jak te zdefiniowane w systemie Android?

2) Nawet jest widoczny, Android nie sprawdza uprawnień zdefiniowanych przez użytkownika z konfliktami nazw. (Testuję to, definiując uprawnienie o nazwie "android.permission.INTERNET" w aplikacji testowej i nadpisuję definicję systemową i wymaga "android.permission.INTERNET" w mojej aplikacji, a mimo to wszystko działa poprawnie.) Jeśli tak, wszystkie inne aplikacje mogą definiować uprawnienia o tej samej nazwie, których wymaga mój moduł, i oszukiwać moją aplikację. Czy to prawda?

Ktoś może pomóc? Wielkie dzięki!

+0

Spójrz tam, może to, czego szukasz: http://stackoverflow.com/questions/4425940/creating-your-own-permissions/21611769#21611769 – SuperManEver

Odpowiedz

7

Dostałem odpowiedź. Moja aplikacja, która zdefiniowała uprawnienia dla innych aplikacji, musi być zainstalowana przed innymi aplikacjami, które chcą korzystać z moich uprawnień. W przeciwnym razie te aplikacje muszą zostać ponownie zainstalowane, aby móc korzystać z moich uprawnień. Żadne inne operacje ani kody nie są potrzebne, tylko <uses-permission android:name="my.apps.permission.my_permission" />, tak jak inne uprawnienia zdefiniowane w systemie.

I kilka aplikacji może definiować uprawnienia o tej samej nazwie, będące ze sobą w konflikcie. Pierwsza zainstalowana aplikacja zajmuje nazwę uprawnienia powodującego konflikt, inne nie zastąpią ani nie zmienią pierwotnego pozwolenia.

+1

Hej MaratSafinWang, można podać przykładowy kod dla pozwolenie? –

+0

Witam @omidnazifi, użyj - https://developer.android.com/guide/topics/manifest/permission-element.html w celach informacyjnych. –

Powiązane problemy