我正在 -
09-23 01:13:13.488: W/System.err(15728): java.io.FileNotFoundException: /data/data/com.testapp.main/databases/MYContent: open failed: EACCES (Permission denied)
09-23 01:13:13.489: W/System.err(15728): at libcore.io.IoBridge.open(IoBridge.java:416)
09-23 01:13:13.489: W/System.err(15728): at java.io.FileInputStream.<init>(FileInputStream.java:78)
09-23 01:13:13.489: W/System.err(15728): at com.testapp.main.MainFragmentActivity.backupDatabase(MainFragmentActivity.java:1411)
仅当应用程序用作主应用程序的库时才会出现异常。
工作 -
testApp (data/data/com.testapp.main/databases/MYContent)
\
\
RUN
不工作 -
testApp (data/data/com.testapp.main/databases/MYContent) (library)
\
\
mainApp
\
\
RUN
我知道问题open failed: EACCES (Permission denied)
是因为 -
任何其他应用都无法访问不同应用中的文件。
但我的应用testapp
与我只是从主应用mainApp
访问的图书馆没有区别。
如何访问它?
MainFragmentActivity.java
String inFileName = "/data/data/com.testapp.main/databases/MYContent";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile); //error here.
答案 0 :(得分:0)
问题是您正在对此文件的路径进行硬编码。使用getFileStreamPath()或getFilesDir()获取适当的位置(类似地,在编写文件时使用Context中的方法)。这将确保代码无论捆绑到哪个应用程序都能正常工作。