2011-10-10 36 views
6
W/PackageManager(61): Not granting permission android.permission.SET_ACTIVITY_WATCHER to package 

Bu, platform imzası kullanılarak imzalanmadan uygulamalara verilmeyen bir izin örneğidir. Bununla birlikte, köklü bir aygıtta (/ system/bin/su ve SuperUser.apk ile) çalışan herhangi bir uygulamanın bu izinlerden herhangi birine nasıl verilebileceğini öğrenmek istiyorum. Bunu yapmakAndroid Sistem İzinleri Kök üzerinden

Process p = Runtime.getRuntime().exec("su"); 
p.waitFor(); 

"reddetme" "kabul" ya da süper kullanıcı iletişim ister ama SecurityException hala atılır.

cevap

2

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="[your package name]" 
     android:sharedUserId="android.uid.system"> 

Daha ayrıntılarda şu burada bulabilirsiniz gibi sharedUserId ayarlayarak sistem uygulaması olarak çalıştırmak için uygulamanızı ilan edebilir: How to sign Android app with system signature?

+2

Bu uygulamayı derleyebilir ve rootlu bir cihazda çalıştırabilir ve Android Market’te güvenle dağıtabilir miyim? Köklü cihazlar için sadece bir uygulama, özel bir ROM yapmıyorum. – Tom

+0

Hayır. Android Market'te sistem düzeyinde erişim ile uygulamaları dağıtamazsınız. – spatulamania

+1

O zaman aradığım şey bu değil. Köklü bir cihazda kendi yazılımımı çalıştıran bir kişi değil, bu tür izinleri almanın bir yolunu arıyorum. Dağıtım devam ettikçe, SetCPU'ya veya ekran görüntüsü uygulamalarının sayısına bakın, bu tür izinleri sorun olmadan kullanın. – Tom

1

Eğer kopya gerekir apk dosyası '/ sistem/uygulamalar'. Programlı olarak yapılabilir. Bunu yalnızca root izinleriniz varsa yapabilirsiniz. bir kez kopyalandığında, cihazı yeniden başlatınız (root'unuz varsa, yeniden başlatma da programlanabilir) ve manifest dosyanızda belirtilen tüm izinleri size verilecektir. Bunu pazarda da dağıtabilirsiniz.

+1

Evet Bu düşüncem vardı, ancak SADECE platform imzasıyla imzalanmış uygulamalara verilen bazı izinler var. Uygulamanızı/sistem/uygulama içine yerleştirmek size bunlardan bazılarını verir, ancak hepsini içermez. Ayrıca, bir tür garip bir yeniden başlatma gerektirir ve uygulama, Root Explorer gibi bir uygulama olmadan kaldırılamayacağınız anlamına gelir. – Tom

+1

Bu tekniği oldukça uzun bir süredir kullanıyorum ve hiç verilmeyen hiçbir ize rastlamadım. Yaptığım şey menümde "uygulamayı root/unroot" yapmak için bir ayar sağlamak. kullanıcı root-yetkisi-ayrıcalıklarını tıkladığında, uygulamanın sistem klasörüne kopyalanacağını ve cihazın yeniden başlatılacağını söyleyen bir pencere açarım - Devam/İptal. Ayrıca unroot için benzer. Benim için harika, henüz şikayet yok. –

+0

İyi bir şekilde yapılabileceğine eminim, ancak yeniden başlatma ve kolayca kaldırılamamak benim için çok fazla. Yeni başlayanlar için, tüm paylaşılan tercihler dosyalarınızı, önbelleğinizi vb. Kopyalamak zorunda kalacak mısınız? Bu, ve hala STATUS_BAR_SERVICE gibi Manifest.permission içinde izinleri izin verilmez çünkü onlar imza düzeyinde sistem düzeyinde değil olarak atanmış çünkü. – Tom