我正在修改Android源代码(AOSP)以创建文件/sdcard/myfile
。该文件已正确创建,并且在我从adb shell
执行cat /sdcard/myfile
时可见。从sdcard读取文件的Android源代码错误
然而,当我试图通过使用new FileReader(myfile)
来自同一个包管理服务代码的代码来访问文件(从PackageManagerService
这是应用程序框架层的部分中创建的文件),我得到以下异常:
java.io.FileNotFoundException: /sdcard/myfile (Permission denied)
我的文件的权限是这样的:
----rwxr-x system sdcard_rw 344 2013-03-15 08:39 myfile
什么可能我是做错了什么?我已经通过记录我试图访问的文件名和文件名来检查文件名是否正确。
更新:
下面是完整的堆栈跟踪:
W/System.err( 67): java.io.FileNotFoundException: /sdcard/myfile (Permission denied)
W/System.err( 67): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
W/System.err( 67): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
W/System.err( 67): at java.io.FileInputStream.<init>(FileInputStream.java:80)
W/System.err( 67): at java.io.FileInputStream.<init>(FileInputStream.java:132)
W/System.err( 67): at java.io.FileReader.<init>(FileReader.java:66)
W/System.err( 67): at org.csrdu.apex.policy.ApexPackagePolicy.getPolicyReader(ApexPackagePolicy.java:224)
W/System.err( 67): at org.csrdu.apex.policy.ApexPackagePolicy.loadPoliciesForPackage(ApexPackagePolicy.java:82)
W/System.err( 67): at org.csrdu.apex.AccessManager.checkExtendedPermissionByPackage(AccessManager.java:56)
W/System.err( 67): at com.android.server.PackageManagerService.checkUidPermission(PackageManagerService.java:1703)
W/System.err( 67): at com.android.server.am.ActivityManagerService.checkComponentPermission(ActivityManagerService.java:4096)
W/System.err( 67): at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:1960)
W/System.err( 67): at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:2516)
W/System.err( 67): at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2081)
W/System.err( 67): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:142)
W/System.err( 67): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1467)
W/System.err( 67): at android.os.Binder.execTransact(Binder.java:320)
W/System.err( 67): at dalvik.system.NativeStart.run(Native Method)
检查您的sdcare安装或未安装? – QuokMoon 2013-03-15 04:15:16
如果可能,请提供错误日志和代码 – cwhsu 2013-03-15 04:15:42
@altaf,是的。我可以通过'adb shell'正确访问它。 @cwhsu提供日志,但我认为只有第一行是相关的。 :( – recluze 2013-03-15 04:18:09