android - 无法保存文本文件

时间:2016-10-12 14:02:28

标签: java android file text save

这个问题很常见,我用谷歌搜索了它,但它仍然无法正常工作。我只是尝试使用以下代码保存文本文件:

temporary table

在我的清单中我宣布:

OperationId

但是,每当我尝试运行代码时,应用都会因错误而崩溃,并且很遗憾,APP_NAME已停止运行。"谁能告诉我我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

if ((checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)   == PackageManager.PERMISSION_GRANTED)&& Build.VERSION.SDK_INT >= 23 ) {
                Log.v(TAG,"Permission is granted");
                return true;}
              else{
              ActivityCompat.requestPermissions(this, new String[]Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
                  }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
            Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
             String state = Environment.getExternalStorageState();
            if (!Environment.MEDIA_MOUNTED.equals(state)) {
                Toast.makeText(getApplicationContext(), "Access denied", Toast.LENGTH_LONG).show();
            }
            String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/data";
            File dir = new File(path);
            dir.mkdirs();
             File file = new File(path + "/savedFile.txt");
            String saveText = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());

                 try {
                       fos = new FileOutputStream(file);
                       OutputStreamWriter ow =  new OutputStreamWriter(fos);
                       ow.write(saveText.getBytes());
                       ow.append(saveText.getText());
                       ow.close();
                       fos.close();
                       Toast.makeText(getBaseContext(),
                       "Done writing SD 'mysdfile.txt'",Toast.LENGTH_SHORT).show();
                     }} catch (Exception e) {
                            Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
                                           }

        }
    }

您需要使用类似此代码的内容。因为您需要指定运行时权限.Marshmallow需要您首先检查权限以使用相应的资源。 从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时。此方法简化了应用安装过程,因为用户在安装或更新应用时无需授予权限。它还使用户可以更好地控制应用程序的功能;例如,用户可以选择让相机应用程序访问相机,但不能访问设备位置。用户可以随时转到应用程序的“设置”屏幕

来撤消权限