2016-04-05 20 views
0

Bir hizmetten tetiklenen bir yerel (C++) uygulamadan "kabuk" için izin verilen bir dosyada fopen() işlevini çalıştırmaya çalışıyorum Android uygulamam. Yerel kodu kabuktan bir PIE olarak çalıştırdığımda, dosyayı okumak için açabiliyorum, ancak Android uygulamasından denediğimde, Android uygulaması farklı bir kullanıcı alanında çalıştırıldığı için dosyayı açamaz. bu yüzden dosyayı açamıyorum. Benim sorum şu, Android uygulamasından bir "kabuk" kullanıcısı veya "kabuk" bir çocuk olarak komutu çalıştırmak mümkün mü? Cihazın kökünü çıkarmadan bunu yapmak istiyorum, bu yüzden su söz konusu değil.Bir Android uygulamasından bir kabuk kullanıcısı olarak komut çalıştırılıyor

+0

sorunuzu 'shell' ile hiçbir şey almadınız, bu yüzden bu etiket kaldırılmalıdır. yerel kod nedir? NDK? eğer öyleyse, etiketlerinizi düzeltin ve 'android-ndk' ekleyin –

cevap

1

Köklü bir cihaz olmadan uygulamanızın kullanıcı kimliğini değiştiremezsiniz. Yapabilirseniz, güvenlik modeli çok kullanışlı olmaz. Uygulamanızın dosyaya erişmesi gerekiyorsa, uygun izinler vermeniz gerekir.

Diğer yaygın çözüm, işi dosya açmak ve bir dosya tanıtıcıyı geri vermek olan "kabuk" kullanıcısı olarak çalışan bir hizmete sahip olmaktır. Zor olan kısım, bu hizmeti "shell" kullanıcısı olarak başlatmanın bir yoluna ihtiyaç duymanızdır. FWIW, Java veya C++ ile kodlama yapsanız da durum aynıdır.

İlgili konular