Android-在一台设备上查看文件导致异常

Android-在一台设备上查看文件导致异常,android,Android,试图打开以前从android应用程序保存的Excel文件 使用隐含意图。 在某些设备上运行正常,但在一台设备(华为P6)上应用程序崩溃 每当我执行此操作时,或者当我试图使用意图打开文件管理器中的包含文件夹时。我得到了FileNotFoundException 该文件实际上是存在的(我可以在文件管理器中看到它) 我可以使用内置应用打开并查看文件(如果我从 文件管理器) 但我无法从我的应用程序打开此文件,也无法在文件管理器中查看或浏览(同样,在其他设备上也可以正常工作) 代码: 在两种情况下调用

试图打开以前从android应用程序保存的Excel文件
使用隐含意图。
在某些设备上运行正常,但在一台设备(华为P6)上应用程序崩溃
每当我执行此操作时,或者当我试图使用意图打开文件管理器中的包含文件夹时。我得到了FileNotFoundException

  • 该文件实际上是存在的(我可以在文件管理器中看到它)
  • 我可以使用内置应用打开并查看文件(如果我从 文件管理器)
但我无法从我的应用程序打开此文件,也无法在文件管理器中查看或浏览(同样,在其他设备上也可以正常工作)

代码:

在两种情况下调用startActivity()后,应用程序都会崩溃
并在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