2010-12-31 11 views
7

Android uygulamamda bir izin tanımlamak ve diğer üçüncü taraf uygulamaların kullanmasına izin vermek istiyorum. Bu izin, modüllerimin çağrılmasını kısıtlamak için kullanılır. Yani, üçüncü taraf uygulamaların, Android sistem tarafından tanımlanan sistem izinlerini, android.permission.INTERNET veya benzeri gibi benim modülümü aramak için doğru izni istemesi gerekir.Android'de kullanmak üzere üçüncü taraf uygulamaları için bir izin tanımlayın

Benim testimde, uygulamamdaki izni tanımladım, "my.apps.permission.my_permission" deyin ve sonra bunu emülatöre yükleyin. Bazı Etkinliklerim'de, android: allow = "my.apps.permission.my_permission" özelliği eklendi. Bu özellik, etkinliklerimi çağıran uygulamaların "my.apps.permission.my_permission" doğru izne sahip olmasını zorunlu kılıyor. Daha sonra bir test uygulamasında, AndroidManifest.xml, <uses-permission android:name="my.apps.permission.my_permission" />

'da izin isteğinde bulunun. Sorun, test uygulamasında, izin gerektiren aktivitelerimi çağıracağım, startActivity() işlevini çağırdığımda, bir SecurityException aldım: İzin Reddedildi. Ancak, test uygulamasında aynı adla bir izin tanımlamış olsaydım, her şey iyi çalışıyor.

1), "my.apps.permission.my_permission" Uygulamamda tanımlanan izin, diğer üçüncü taraf uygulamalar tarafından görülemez, görünüyor:

Ve aşağıdakiler benim sonuçlar bulunmaktadır. Nasıl görünür hale getirilir, böylece diğer uygulamalar Android sistemde tanımlananlar gibi benim iznimi kullanabilir?

2) Hatta görünür, Android, kullanıcı tanımlı izinleri çakışan adla denetlemez. (Bunu test uygulamasında "android.permission.INTERNET" adıyla bir izin tanımlayarak test ediyorum ve sistem tanımlı olanı geçersiz kılar. ve benim app "android.permission.INTERNET" gerektirir ve hala, her şey iyi çalışıyor.) Öyleyse, diğer her uygulama benim modülün gerektirdiği aynı ada sahip bir izin tanımlayabilir ve benim app hile. Bu doğru mu?

Herkes yardımcı olabilir? Çok teşekkürler! Yanıtı aldım.

+0

, orada Bak için aradığınız neyin: MaratSafinWang Hey, bir örnek kod verebilir http://stackoverflow.com/questions/4425940/creating-your-own-permissions/21611769#21611769 – SuperManEver

cevap

7

Cevabı aldım. Kullanılacak diğer uygulamaların iznini tanımlayan kendi uygulamam, izinlerimi kullanmak isteyen diğer uygulamaların önüne yüklenmelidir. Aksi halde, izinlerimi kullanmak için bu uygulamaların yeniden yüklenmesi gerekir. Başka hiçbir işlem veya kod gerekmiyor, sadece diğer sistem tanımlı izinler ile aynı <uses-permission android:name="my.apps.permission.my_permission" />.

Ayrıca, çeşitli uygulamalar birbiriyle çakışan aynı ada sahip izinleri tanımlayabilir. İlk kurulan uygulama çakışan izin adını kaplar, diğerleri orijinal iznin üzerine yazmaz veya değiştirmez.

+1

izni? –

+0

Merhaba @omidnazifi, başvuru için - https://developer.android.com/guide/topics/manifest/permission-element.html. –

İlgili konular