首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >file.createFile不工作。Android 10

file.createFile不工作。Android 10
EN

Stack Overflow用户
提问于 2020-03-22 13:53:11
回答 3查看 1.7K关注 0票数 1
代码语言:javascript
复制
 val filePath = getString(R.string.file_path)
    val file = File(filePath)
    var lines: List<String?> = ArrayList()
    if(!file.exists()) {
            try {
               if (Environment.getExternalStorageState()==Environment.MEDIA_MOUNTED) {

                   file.createNewFile()
               }
            } catch (e: IOException) {
                AlertDialog.Builder(this)
                    .setTitle(getString(R.string.No_records_file))
                    .setMessage(getString(R.string.cant_create_file))
                    .setNeutralButton(
                        R.string.Exit
                    ) { dialog, id -> finish() }.show()
            }
        }

它可以在Android 8.0.0,9.0上运行。我不太确定安卓系统,但这个问题出现在Mi9T pro上

EN

回答 3

Stack Overflow用户

发布于 2020-03-22 14:36:23

使用Android Q,您不能再直接访问文件系统。请改用SAF (存储访问框架)。

票数 2
EN

Stack Overflow用户

发布于 2020-04-10 01:22:10

在Android API 29上,getExternalStorageDirectory已被弃用,您应该使用getExternalFilesDir。

票数 1
EN

Stack Overflow用户

发布于 2020-04-10 01:50:21

首先添加这个规则;

代码语言:javascript
复制
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

向activity请求权限;

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    //ASK HERE...
    if (shouldAskPermissions()) {
        askPermissions();
    }

}

-

代码语言:javascript
复制
  //// ASK METHODS
    protected boolean shouldAskPermissions() {
        return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
    }

    protected void askPermissions() {
        String[] permissions = {
                "android.permission.READ_EXTERNAL_STORAGE",
                "android.permission.WRITE_EXTERNAL_STORAGE"
        };
        int requestCode = 200;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(permissions, requestCode);
        }
    }

然后,对于创建文件,使用以下代码;

代码语言:javascript
复制
        File directory = new File(Environment.getExternalStorageDirectory()+java.io.File.separator +"AppName");

             try{
                     if(!directory.exists()) {
                         System.out.println("Directory created");
                         directory.mkdirs();
                     } else {
                         System.out.println("Directory is not created");
                     }

                     File f = new File(directory.getPath()+"/"+ "ENTER_FILE_NAME" + ".jpg");
                     f.createNewFile();
                     FileOutputStream fo = new FileOutputStream(f);
                     fo.write(bytes.toByteArray());
                     fo.close();

                     System.out.println("FILE PATH:" + f.getPath());

                 }catch(Exception e){
                     e.printStackTrace();
                 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60796342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档