Android-在一台设备上查看文件导致异常
试图打开以前从android应用程序保存的Excel文件Android-在一台设备上查看文件导致异常,android,Android,试图打开以前从android应用程序保存的Excel文件 使用隐含意图。 在某些设备上运行正常,但在一台设备(华为P6)上应用程序崩溃 每当我执行此操作时,或者当我试图使用意图打开文件管理器中的包含文件夹时。我得到了FileNotFoundException 该文件实际上是存在的(我可以在文件管理器中看到它) 我可以使用内置应用打开并查看文件(如果我从 文件管理器) 但我无法从我的应用程序打开此文件,也无法在文件管理器中查看或浏览(同样,在其他设备上也可以正常工作) 代码: 在两种情况下调用
使用隐含意图。
在某些设备上运行正常,但在一台设备(华为P6)上应用程序崩溃
每当我执行此操作时,或者当我试图使用意图打开文件管理器中的包含文件夹时。我得到了FileNotFoundException
- 该文件实际上是存在的(我可以在文件管理器中看到它)李>
- 我可以使用内置应用打开并查看文件(如果我从 文件管理器)
并在Instrumentation类的execStartActivity方法中缓存RemoteException 以下是我在日志中看到的内容(同样,在文件管理器中查看文件或打开文件也类似: 更新:正如在互联网上发现的那样,华为有一个bug,
logcat显示可疑的FileNotFoundException,这不是真正的原因。 崩溃的真正原因是隐藏的,而不是在LogCAT中显示的。
12-09 11:49:08.235: W/dalvikvm(29245): threadid=1: thread exiting with uncaught exception (group=0x40cbb930)
12-09 11:49:10.701: I/Process(29245): Sending signal. PID: 29245 SIG: 9
12-09 11:49:10.821: W/System.err(29476): java.io.FileNotFoundException: /data/cust/xml/hw_launcher_load_icon.xml: open failed: ENOENT (No such file or directory)
12-09 11:49:10.825: W/System.err(29476): at libcore.io.IoBridge.open(IoBridge.java:409)
12-09 11:49:10.825: W/System.err(29476): at java.io.FileInputStream.<init>(FileInputStream.java:109)
12-09 11:49:10.825: W/System.err(29476): at android.content.res.ResourcesEx.readDefaultConfig(ResourcesEx.java:808)
12-09 11:49:10.825: W/System.err(29476): at android.content.res.ResourcesEx.<init>(ResourcesEx.java:741)
12-09 11:49:10.825: W/System.err(29476): at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:1721)
12-09 11:49:10.828: W/System.err(29476): at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:1752)
12-09 11:49:10.828: W/System.err(29476): at android.app.LoadedApk.getResources(LoadedApk.java:485)
12-09 11:49:10.828: W/System.err(29476): at android.app.ContextImpl.init(ContextImpl.java:1911)
12-09 11:49:10.828: W/System.err(29476): at android.app.ContextImpl.init(ContextImpl.java:1904)
12-09 11:49:10.828: W/System.err(29476): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4269)
12-09 11:49:10.828: W/System.err(29476): at android.app.ActivityThread.access$1300(ActivityThread.java:145)
12-09 11:49:10.828: W/System.err(29476): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
12-09 11:49:10.828: W/System.err(29476): at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 11:49:10.828: W/System.err(29476): at android.os.Looper.loop(Looper.java:137)
12-09 11:49:10.831: W/System.err(29476): at android.app.ActivityThread.main(ActivityThread.java:5095)
12-09 11:49:10.831: W/System.err(29476): at java.lang.reflect.Method.invokeNative(Native Method)
12-09 11:49:10.831: W/System.err(29476): at java.lang.reflect.Method.invoke(Method.java:511)
12-09 11:49:10.831: W/System.err(29476): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
12-09 11:49:10.831: W/System.err(29476): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
12-09 11:49:10.831: W/System.err(29476): at dalvik.system.NativeStart.main(Native Method)
12-09 11:49:10.835: W/System.err(29476): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
12-09 11:49:10.835: W/System.err(29476): at libcore.io.Posix.open(Native Method)
12-09 11:49:10.838: W/System.err(29476): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
12-09 11:49:10.838: W/System.err(29476): at libcore.io.IoBridge.open(IoBridge.java:400)
12-09 11:49:10.838: W/System.err(29476): ... 19 more
12-09 11:49:10.971: W/System.err(29476): Invalid int: ""
此设备没有sd卡,将文件保存到:
/storage/emulated/0/Entrepreneur/Entrepreneur_report_TMP.xls
(该文件存在于此位置)可能是您的手机正在运行的SDK,我看不出它在其他设备上工作(但在您的设备上不工作)的任何其他原因,您可能必须更改manifest.xml中的最低SDK和目标SDK 不确定,只是一个想法,就像我以前有过同样的问题一样。 同时谷歌搜索你在控制台中遇到的错误,你可能会发现它有什么问题。
还有,您使用了哪些调试方法?您得到的是
java.io.FileNotFoundException:
。检查您的文件是否存在于该位置。检查file.canRead()
,我怀疑可能是个问题。该文件存在。file.canRead()=正确。请看更新的问题,我添加了文件详细信息。您在android清单中提供了所有必需的权限吗?我提供了
/**
* Creates new file
*
* @return new file in Entrepreneur folder
*/
private File getNewFileName() {
final String fileName = REPORT_FILE_PREFIX + "TMP.xls";
// Creating file in external storage
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File(sdCard.getAbsolutePath()
+ "/Entrepreneur");
// create directory if not exist
if (!directory.isDirectory()) {
directory.mkdirs();
}
// file path
File file = new File(directory, fileName);
return file;
}
/storage/emulated/0/Entrepreneur/Entrepreneur_report_TMP.xls