2013-09-28 28 views
2

寫的我,當我嘗試啓動我的S3 apk文件,logcat的Eclipse中顯示我的錯誤:錯誤而安裝的應用程序上的Galaxy S3


09-28 16:56:59.020: A/Environment(1967): Static storage paths aren't available from AID_SYSTEM 
09-28 16:56:59.020: A/Environment(1967): java.lang.Throwable 
09-28 16:56:59.020: A/Environment(1967): at android.os.Environment.throwIfSystem(Environment.java) 
09-28 16:56:59.020: A/Environment(1967): at android.os.Environment.getExternalStorageDirectory(Environment.java) 
09-28 16:56:59.020: A/Environment(1967): at com.samsung.android.MtpApplication.MtpReceiver.onReceive(MtpReceiver.java) 
09-28 16:56:59.020: A/Environment(1967): at android.app.ActivityThread.handleReceiver(ActivityThread.java) 
09-28 16:56:59.020: A/Environment(1967): at android.app.ActivityThread.access$1600(ActivityThread.java) 
09-28 16:56:59.020: A/Environment(1967): at android.app.ActivityThread$H.handleMessage(ActivityThread.java) 
09-28 16:56:59.020: A/Environment(1967): at android.os.Handler.dispatchMessage(Handler.java) 
09-28 16:56:59.020: A/Environment(1967): at android.os.Looper.loop(Looper.java) 
09-28 16:56:59.020: A/Environment(1967): at android.app.ActivityThread.main(ActivityThread.java) 
09-28 16:56:59.020: A/Environment(1967): at java.lang.reflect.Method.invokeNative(Native Method) 
09-28 16:56:59.020: A/Environment(1967): at java.lang.reflect.Method.invoke(Method.java) 
09-28 16:56:59.020: A/Environment(1967): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
09-28 16:56:59.020: A/Environment(1967): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
09-28 16:56:59.020: A/Environment(1967): at dalvik.system.NativeStart.main(Native Method) 

有人能幫助我嗎?

回答

5

此錯誤只發生在Android 4.2.2,android.os.Environment:

private static void throwIfSystem() 
{ 
    if (Process.myUid() == Process.SYSTEM_UID) 
    { 
     Log.wtf(TAG, 
       "Static storage paths aren't available from AID_SYSTEM", 
       new Throwable()); 
    } 
} 

public static File getExternalStorageDirectory() 
{ 
    throwIfSystem(); 
    return sCurrentUser.getExternalStorageDirectory(); 
} 

我已經開發了需要系統權限的應用程序,所以我必須在AndroidManifest.xml中聲明android:sharedUserId =「android.uid.system」,並用相關ROM的platform.x509.pem,platform.pk8簽名我的應用程序,然後我寫入外部存儲器,發生錯誤。

但我很困惑,也許你運行你的應用程序與銀河S3的platform.x509.pem,platform.pk8文件簽名?

因爲我的應用程序只能在Android 4.2.2的自定義Android墊中運行,所以Android框架工程師刪除throwIfSystem()方法並修改我的應用程序的SD卡寫入權限。

//的Android模擬器

d --- rwxr-X系統sdcard_rw 1970-01-01 00:00 SD卡

//的Android定製墊

drwxrwxr-X系統sdcard_rw 2014- 09-01 19:07 sdcard

注意:除了Android 4.2.2,其他Android版本(Android 4.4.2除外),沒有上面的錯誤,但像我的應用程序的相同情況。 Android系統不會允許該應用程序聲明android:sharedUser AndroidManifest.xml中的Id =「android.uid.system」,並與相關ROM的platform.x509.pem,platform.pk8簽名寫入SD卡,系統會提醒您權限被拒絕。也許這是一種安全機制但是當我在Android 4.4.2上的Android官方模擬器上測試我的應用程序時,它運行正常,我不知道爲什麼。

也許你的情況和我的不一樣,但希望對你有所幫助!如果你能讀懂中文,你可以在我的個人博客中閱讀這篇文章。它會告訴更多關於上述錯誤的信息。

http://www.ifeegoo.com/android-debug-static-storage-paths-are-not-available-from-aid-system-error-analysis-and-solution.html

-1

它看起來像你正在使用靜態字段,你不應該。嘗試將其追回到您認爲問題可能出現的位置,因爲每條線都是錯誤發生的地方。它在這種情況下從下到上起作用。看起來你有一個拋出異常。所以如果你在可拋事件中有一個靜態字段,那很可能是你的原因。這太難說沒有源代碼

相關問題