2013-12-16 83 views
0

如何在android應用程序中運行adb shell am命令。我試圖運行dumpheap命令。 Process p = Runtime.getRuntime().exec("am dumpheap -n 3554 /sdcard/memory");。我收到以下錯誤。從android應用程序運行adb命令

java.lang.SecurityException: Requires permission android.permission.SET_ACTIVITY_WATCHER 
    at android.os.Parcel.readException(Parcel.java:1425 
    at android.os.Parcel.readException(Parcel.java:1379) 
    at android.app.ActivityManagerProxy.dumpHeap(ActivityManagerNative.java:3548) 
    at com.android.commands.am.Am.runDumpHeap(Am.java:721) 
    at com.android.commands.am.Am.run(Am.java:124) 
    at com.android.commands.am.Am.main(Am.java:81) 
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) 
    at dalvik.system.NativeStart.main(Native Method) 

回答

0

您可能需要在Manifest文件中提供必要的權限。儘管從文檔看,它只是用於調試目的。

您可以查看詳細信息here

+0

第三方應用程序不允許SET_ACTIVITY_WATCHER權限。 –

+0

是的,你需要使用與系統相同的證書進行簽名,這對於普通開發者來說是不可能的。請參閱線程https://groups.google.com/forum/#!topic/android-developers/OvCcdvO6jZY –

+0

是否存在與'dumpheap -n '命令等效的api? –

相關問題