【问题标题】:Android 7.1 Write to text fileAndroid 7.1 写入文本文件
【发布时间】:2016-11-07 14:04:27
【问题描述】:

Nougat 的新手来自 Jelly bean 尝试将文本文件写入 sdcard 我知道我现在必须请求权限,但找不到任何有效的代码

尝试了以下

        StringBuilder bodyStr=new StringBuilder();
                 bodyStr.append(data1Str.toString()).append(",").append(data2Str.toString()).append(",").append(data3Str.toString()).append(",").append(data4Str.toString()).append(",").append(data5Str.toString()).append(",").append(data22Str.toString()).append(",").append(data23Str.toString()).append(lineSep);; 
             String bodytextStr=bodyStr.toString();

                boolean hasPermission = (ContextCompat.checkSelfPermission(data_entry.this,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
                if (!hasPermission) {
                    ActivityCompat.requestPermissions(data_entry.this,
                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                            REQUEST_WRITE_STORAGE);
                }


                try {

                    File myFile = new File(fileName);
                    myFile.createNewFile();
                    FileOutputStream fOut = new FileOutputStream(myFile);
                    OutputStreamWriter myOutWriter =
                            new OutputStreamWriter(fOut);
                    myOutWriter.append(bodytextStr);
                    myOutWriter.close();
                    fOut.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();
                }

回来[权限被拒绝]

在清单中设置了通常的权限

我哪里出错了的任何想法

感谢任何帮助

标记

【问题讨论】:

    标签: text permissions android-7.0-nougat


    【解决方案1】:

    您要么拥有权限并且可以在写入文件的地方执行 try catch 块,要么您必须在 onRequestPermissionsResult 中执行。

    类似:

    public void yourMethod(){
        boolean hasPermission = (ContextCompat.checkSelfPermission(data_entry.this,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
        if(hasPermission){
          // write
        }else{
          // ask the permission
          ActivityCompat.requestPermissions(data_entry.this,
                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                            REQUEST_WRITE_STORAGE);
          // You have to put nothing here (you can't write here since you don't
          // have the permission yet and requestPermissions is called asynchronously)
       }
    }
    
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        // The result of the popup opened with the requestPermissions() method
        // is in that method, you need to check that your application comes here
        if (requestCode == REQUEST_WRITE_STORAGE) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // write
            }
        }
    }
    

    我建议你检查这个链接:https://developer.android.com/training/permissions/requesting.html

    【讨论】:

    • 对不起,我仍然获得权限被拒绝我无法获得的是相同的活动有一种方法可以保存用相机拍摄的照片并将其保存到图片目录中,但是当我尝试使用相同的文本时它说权限被拒绝
    • 我在 yourMethod 中放了一个 Toast,它会在 else 部分询问权限代码,但没有设置权限
    • 如果您对已经拥有的权限有任何疑问,您可以在有关应用程序(应用程序管理或类似内容)部分中检查设备的设置并检查您的应用程序:那里必须是“权限”部分。你有什么?
    • 联系人、位置、存储和电话
    • 检查了吗?你有没有得到这样的弹出窗口:images.techtimes.com/data/images/full/162584/…?方法 requestPermissions() 应该打开它
    【解决方案2】:

    这就是你需要的:https://developer.android.com/training/articles/scoped-directory-access.html#accessing

    您必须要求用户授予访问权限。

    【讨论】:

    • 我认为问题在于我请求访问,但请求框没有出现
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2014-05-15
    • 2010-12-17
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多