【问题标题】:Can't write to external storage无法写入外部存储
【发布时间】:2013-06-06 20:42:18
【问题描述】:

当我打开应用程序时,必须从外部读取应用程序并将联系人中的所有号码复制到该文件,但是当我尝试时总是强制关闭。

public class anti_spam extends TabActivity {
    /** Called when the activity is first created. */
    BufferedReader reader;
    public String[] Number;
    int x=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //------------------------
        getListNumber();
        File logFile = new File("root/log.txt");

        //Hitung Jumlah isi File
        try {
            reader = new BufferedReader(new FileReader("root/log.txt"));
                try {
                while (reader.readLine()!= null)
                {
                    x++;
                }
                reader.close();
            } catch (IOException e) {}
        } catch (FileNotFoundException e1) {}

        //Hapus File Jika Jumlah Kontak Beda
        if (x-1 != Number.length){
           logFile.delete();
        }
           if (!logFile.exists())
           {
              try
              {
                 logFile.createNewFile();
                 Toast.makeText(getBaseContext(), "Data Berhasil Dibuat", Toast.LENGTH_LONG).show();
                 //Isi File
                   try
                   {
                      //BufferedWriter for performance, true to set append to file flag
                      BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
                      String[] numTemp;
                      String numBaru;
                      for(int i=0;i<Number.length;i++)
                      {
                          numTemp = Number[i].split("-");
                        numBaru = (numTemp[0]+numTemp[1]+numTemp[2]);
                        if (numBaru.substring(0, 1).equals("0"))
                        {
                            numBaru = numBaru.replaceFirst("0","+62");
                        }
                          buf.append(numBaru + "\n");
                      }
                      buf.newLine();
                      buf.close();
                   }
                   catch (IOException e)
                      {
                       Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
                      }
              } 
              catch (IOException e)
              {
                 // TODO Auto-generated catch block
                  Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
              }
           }}

在清单上

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
    </uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
    </uses-permission>

【问题讨论】:

  • 显示故障转储输出
  • 当我尝试 AVD 程序时不强制关闭日志创建.. 但如果我尝试智能手机强制关闭.. 智能手机无法创建?

标签: android storage


【解决方案1】:

请将此添加到清单文件中。

    <uses-permission android:name="android.permission.READ_CONTACTS" />

【讨论】:

  • 读取联系人已经插入并归档 log.txt 只是在创建应用程序时创建文件.. 我尝试在 sd 卡上创建 log.txt 仍然强制关闭。
【解决方案2】:

@Dhiren 关于向清单文件添加权限是正确的:

    <uses-permission android:name="android.permission.READ_CONTACTS" />

但问题还有很多,请继续阅读......


我认为您可能需要更加注意允许写入的文件夹。

查看Environment.getExternalStorageDirectory() 上的链接了解如何操作。

这些答案中还有一些有用的代码:

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2016-10-27
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2022-01-11
    相关资源
    最近更新 更多