有沒有辦法在沒有root權限的情況下運行android系統應用程序?我可以如通過ADB執行系統應用:如何在沒有root權限的情況下運行android系統應用程序?
adb shell /system/bin/screencap -p /sdcard/screen.png
在我自己的應用程序,我想沒有「蘇」命令來運行這樣的shell命令。有什麼辦法嗎? Android如何防止用戶應用程序執行系統應用程序?
有沒有辦法在沒有root權限的情況下運行android系統應用程序?我可以如通過ADB執行系統應用:如何在沒有root權限的情況下運行android系統應用程序?
adb shell /system/bin/screencap -p /sdcard/screen.png
在我自己的應用程序,我想沒有「蘇」命令來運行這樣的shell命令。有什麼辦法嗎? Android如何防止用戶應用程序執行系統應用程序?
您應該能夠運行在Java代碼中的命令:
Runtime.getRuntime().exec("screencap -p /sdcard/screen.png");
有一些shell命令,你可以無需根用戶身份執行。所以你不需要運行「su」。我不確定你是否可以執行screencap。當然,您需要獲得在您的應用中寫入SD_CARD的權限。
android.permission.WRITE_EXTERNAL_STORAGE
但是爲什麼你不使用Android API來製作截圖?欲瞭解更多信息,請閱讀這篇文章的計算器:How to programmatically take a screenshot in Android?
Androids安全模型基於用戶id,就像Linux一樣。每個應用都有自己的用戶ID。所以你的應用程序有一個像1001這樣的用戶標識。如果你的用戶被允許運行你的命令,否則你會收到一個錯誤。
編輯:
你需要root用戶截屏或成爲系統應用程序。有權限READ_FRAME_BUFFER,但只有當您是系統應用程序時纔可以獲得該權限。當應用可以截取設備的屏幕截圖時,它是一個安全問題。
我發現這個API http://code.google.com/p/android-screenshot-library/它承諾不帶根目錄的截圖。我沒有測試它。圖書館啓動一個本地服務,然後爲您截取屏幕截圖。 但是您必須在每次手機啓動時運行該服務。所以它獲得了系統權限。這不是很舒服......
結論:採取屏幕快照,無需從代碼根本沒有很好的辦法......
Is there any way to run android system app without root permission?
它必須NO,但有些時候,一些功能,這不可公開使用可用。我見過使用java反射的例子。我想,不。
的事情是亞行外殼和用戶應用有基於用戶和不同的安全級別組ID(UID和GID)。
更多信息:http://android-dls.com/wiki/index.php?title=Android_UIDs_and_GIDs
此外,還有通過應用權限和隱伏&內部類,程序,等它內部使用作出限制。
產品號:關於截圖。在Android市場(谷歌播放)有幾個應用程序提供沒有ROOT訪問的屏幕截圖。所以,這是可能的。 儘管Android 4.0的屏幕截圖可以從「框中」獲得。
請注意詳細說明哪些應用可以做到這一點?我們可以反編譯它們並找出它是如何工作的。 –
AFAIK,沒有API來捕捉截圖。所以,我嘗試通過shell命令執行screencap。但是我無法在沒有root權限的情況下執行它。 –
似乎是這樣。沒有API,你需要root來運行screencap。 我發現這個庫http://code.google.com/p/android-screenshot-library/與此,你應該能夠沒有根用戶截圖。它安裝一個本地服務,通過adb shell啓動。所以它有能力截圖。 – mcia
我曾嘗試過。它不適用於android 3.x和android 4.x,因爲framebuffer在那裏被破壞了。現在可以接受的方式是通過shell命令調用screencap(在root權限下) –