【问题标题】:Unable to create a file in the Memory card无法在存储卡中创建文件
【发布时间】:2016-11-22 21:01:27
【问题描述】:

我正在尝试将数据写入文件并将其存储在数据库中。我在网上尝试了很多代码。但是,我无法写入数据。谁能帮帮我。截至目前,我正在使用以下代码。我声明了 onClick="writemessage" 并在 writemessage(View view) 函数中使用了以下代码。我通过将手机连接到笔记本电脑来运行。谁能帮帮我。

    FileOutputStream fos = null;

  try {
        String filename = "abc.txt";
        String data = "Sensor data is found";
        File myFile = new File(Environment
                .getExternalStorageDirectory(), filename);
        if (!myFile.exists())
            myFile.createNewFile();
        byte[] data = string.getBytes();
        try {
            fos = new FileOutputStream(myFile);
            fos.write(data);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

【问题讨论】:

  • 详细解释“我无法写入数据”是什么意思。
  • 欢迎来到 Stack Overflow!请查看我们的SO Question Checklist 以帮助您提出一个好问题,从而得到一个好的答案。

标签: java android database memory android-sdcard


【解决方案1】:

检查AndroidManifest.xml 以获得此权限

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

并在您的活动中处理运行时权限

private int REQUEST_WRITE_EXTERNAL_STORAGE = 1;

在将文件写入 SD 卡之前检查 Write External Storage Permission

  if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
    }else {
     //Write Data to SD Card
    }

并覆盖onRequestPermission 活动方法。

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
            if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                this.finish();
                Toast.makeText(this, "Permission is required.", Toast.LENGTH_LONG).show();
            }
            return;
        }
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            break;

    }

【讨论】:

    【解决方案2】:

    您是否在清单文件中添加了此权限并处理运行时权限。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多