【问题标题】:READING EXTERNAL STORAGE ON ANDROID 4.2 JELLY BEAN在 Android 4.2 果冻豆上读取外部存储
【发布时间】:2012-11-27 03:51:31
【问题描述】:

请帮忙....

我创建了一个适用于 Android 2.2 的应用程序,它创建一个文本文件并保存到 sd 卡。 在另一个活动中,它读取此文件并存储到数组中。 该应用程序在 2.2 上运行良好,并且在我的 samsung nexus 与 4.1 上运行良好。 (ICS) 但是我刚刚更新到果冻豆(4.2)并且应用程序现在在尝试打开文件时崩溃。 我已经阅读了关于在 4.2 的清单中添加读取权限的文档,并添加了这个,但应用程序仍然崩溃。 没有日志猫,因为它在模拟器上可以正常工作,但在我的手机上却不行。

4.2 是否需要任何特殊权限或打开文件以进行读取的不同方式?

这是我创建目录和写入文件的代码...

 //Create Reports Folder...........................................
      File directory = new File 
      (Environment.getExternalStorageDirectory().getPath()+"/PatRecords");
              if (!directory.exists()) { 
                      directory.mkdir(); 


                      Toast.makeText(this, "NEW FOLDER CREATED", Toast.LENGTH_SHORT).show();
              } 

            //If Sd card available, and writable with no errors, then write file.........
            if ((mExternalStorageAvailable = true)&(mExternalStorageWriteable = true)&(Error==0))
                {       

                try {
                    File ReportFile = new File(directory.getPath()+"/"+FileName$);
                    ReportFile.createNewFile();

                    FileOutputStream fOut = new FileOutputStream(ReportFile);                   
                    OutputStreamWriter OutWriter = new OutputStreamWriter(fOut);

                    OutWriter.write(Tester$+"\r\n");
                    OutWriter.write(Company$+"\r\n");
                    OutWriter.write(Customer$+"\r\n");
                    OutWriter.write(Address1$+"\r\n");
                    OutWriter.write(Address2$+"\r\n");
                    OutWriter.write(PCode$+"\r\n");
                    OutWriter.write(Instr$+"\r\n");
                    OutWriter.write(Serial$+"\r\n");

                    OutWriter.close();
                    fOut.close();

                    Toast.makeText(this, "NEW FILE CREATED", Toast.LENGTH_SHORT).show();

                } catch (Exception e) {
                    Toast.makeText(getBaseContext(), e.getMessage(),
                            Toast.LENGTH_SHORT).show();
                }//End of try/catch


              }//End Write.....

这是用于阅读的代码....在 4.1 之前可以正常工作,但不能在 4.2...

FilePath=getIntent().getStringExtra("FileToOpen");

    //Open File and read first all data.......
    try {
        BufferedReader br = new BufferedReader(new FileReader(FilePath));

        Tester$ = br.readLine();
        Company$ = br.readLine();
        Customer$ = br.readLine();
        Address1$ = br.readLine();
        Address2$ = br.readLine();
        PCode$ = br.readLine();
        Instr$ = br.readLine();
        InstrSerial$ = br.readLine();
        NumOfTests$ = br.readLine();        
 br.close();
          Toast.makeText(this, "FILE LOADED OK.", Toast.LENGTH_SHORT).show();

          n = n+1;    //Increment n for next test number....

    }
    catch (IOException e) {
        //You'll need to add proper error handling here
        Toast.makeText(getBaseContext(), e.getMessage(),
                Toast.LENGTH_SHORT).show();

非常感谢任何帮助...感谢您的关注

【问题讨论】:

  • 您手机中的 LogCat 显示了什么?

标签: android


【解决方案1】:

在回答我自己的问题时,android 4.2 允许多个用户, 现在可以打开文件,除非它们是由该用户创建的。 由于我试图读取的文件是在 4.1 中创建的,所以它不会 允许应用程序打开并阅读它。 我运行了应用程序并创建了一个新文件,它运行良好。

希望这可以帮助遇到类似问题的任何人。

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多