2010-10-21 21 views
5

Bir sistem dosyasını düzenlemeniz gereken bir uygulamayı planlıyorum.Dosyayı düzenlemek için süper kullanıcı hakları iste

Bu dosyayı yalnızca kök haklarıyla düzenleyebilirim. Superuser.apk yüklü bir köklü dev telefon var. Kök gerektiren diğer uygulamalar, ilk başlangıçta root erişimi isteğinde bulunur. Aynı şeyi yapmak istiyorum ancak uygulamam için süper kullanıcı hakları talep etme konusunda herhangi bir ipucu bulamıyorum.

Ben bir niyet android.intent.action.superuser hakkında bir şey buldum ama bu eylem için bir etkinlik başlatmaya çalıştığımda bir ActivityNotFoundException olsun.

Herhangi bir fikrin var mı?

cevap

2

Amacınız size süper kullanıcı hakları sağlamıyor, yalnızca süper kullanıcı uygulamasının izin verme mekanizmasıyla etkileşime giriyor. Gerçek anahtar, androidin temelindeki linux'un bir kullanıcının ayrıcalıklarının yükselmesini desteklemediğini anlamaktır. Bunun yerine, bir kullanıcının süper kullanıcı olarak _some_other_process_ komutunu çalıştırmasını talep eden bir mekanizmayı destekler (/ desteklemiştir).

Bunun anlamı, gerçek kök hakları görevinin, farklı bir yürütülebilir, muhtemelen su komutunun yetkilendirmesi altında başlattığınız bir yerel 'komut satırı' ile veya sizin özel modifiye android yapınız tarafından yapılması gerektiğidir. destekler. Yerleşik araç kutusu komut satırı programlarından birini kullanarak görevin nasıl yapılacağını anlamanız en kolay yolu olacaktır - örneğin, dosyayı başka bir yere yazın ve sonra istediğiniz yere mv (ve belki de onu seçin). Ayrıca,/system genellikle salt okunur olduğunu ve orada yazabilmeniz için yeniden yazmanız gerektiğini aklınızda bulundurun.

Süper kullanıcı olarak yapmaya çalıştığınız her şeye bir sürü düşünün ... ... bir karmaşa yapmak ya da problemler bırakmak çok kolay. Uygulamayı başkalarına dağıtıyorsanız, oluşturduğunuz güvenlik açıklarını da düşünün.

+0

ipucu için teşekkürler. Şu anda "kedi" komutuyla bir dosya okumayı deniyorum. "su -c 'cat '", adb kabuğundan düzgün çalışıyor. ne yazık ki benim app (Runtime.getRuntime(). exec ("su-c 'kedi '");) içinden çalıştırıldığında aynı komut bir şey döndürmez. – Goddchen

+0

Yapacağını beklemeniz gereken şey hakkında biraz düşünmeniz gerekir - bu, 'herhangi bir şeyi geri döndürmek' için faydalı olmaz. Ancak, siz onu başlatırsanız, bir şey alabilirsiniz (terminal uygulamasının kaynağına bakın). Basitlik için su olmadan ayrıcalıklı bir durumu sınayın veya stdout veya stdin'e bağlı olarak dosyadan dosyaya bir şey kullanın. –

+0

şimdi çalışıyor: Bir kabuk açmak için çalıştırmam gerekti ("su sh"). daha sonra bir dataoutputstream oluşturun ve bu kabuklara komut yaz. – Goddchen

0

Bunun yerine "android.intent.action.superuser" seçmelisiniz? Bunun problem olabileceğini düşünüyorum. Bunun kaynağını şu adreste bulabilirsiniz: http://forum.xda-developers.com/showpost.php?p=2954887&postcount=7

+0

yazım hatası için özür dilerim, tabii ki android.intent.action.superuser kastediyorum. ve bu tam olarak örnek olduğum örnek. – Goddchen

+0

Farklı bir Süper kullanıcı uygulaması yüklemeniz gerekiyor sanırım - belki iş parçacığının başında açıklanmış olan: http://forum.xda-developers.com/showthread.php?p=2954887 – mreichelt

+0

Yeni öğrendim bu Runtime.getRuntime(). exec ("su"); süper kullanıcı doğru iletişim kutusunu çağırır. ama bu şekilde nasıl bir dosya okuyabilir ve yazabilirim? – Goddchen

İlgili konular