【问题标题】:Saving image\file保存图像\文件
【发布时间】:2016-07-09 18:20:28
【问题描述】:

问题是将图像保存到存储中 此代码运行良好,但不适用于 Android 6 和 N

我需要在这里解决什么问题? 或者作为一个选项 - 使用另一个示例保存到内部\外部文件

public void saveImage(Bitmap icon) {

        File ff;        
        File file = new File(android.os.Environment.getExternalStorageDirectory(), "Folder Name");

        ff = new File(file.getAbsolutePath() + file.separator + imageName + ".jpg");
        if(ff.exists()){

            Log.i("sharing", "File exist SD");
        } else{
        try {
            File f = null;
            if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {

                if (!file.exists()) {
                    file.mkdirs();
                }
                Log.i("sharing", "File exist Internal");
                f = new File(file.getAbsolutePath() + file.separator + imageName + ".jpg");
            }
            FileOutputStream ostream = new FileOutputStream(f);
            bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream);
            ostream.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
        }

    }

以及来自 Manifest 的权限:

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

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

感谢

【问题讨论】:

  • 您是否通过新的权限系统请求权限?
  • 你添加权限了吗?
  • 您可能会考虑编辑您的问题并详细解释“此代码运行良好,但不适用于 Android 6 和 N”的含义。你的具体症状是什么?例如,你在崩溃吗?你检查过 LogCat 吗?
  • 伙计们,我已经用权限更新了我的问题。请看一看。我需要smth添加吗?
  • @CommonsWare,没有崩溃,logcat 没问题,但是文件没有保存在存储中

标签: android external internal saving-data


【解决方案1】:

你应该打上uses-permission-sdk-23标签并设置你想要的权限。

然后 您应该通过调用 checkSelfPermission 检查权限是否被授予,并将权限名称作为参数传递

如果未授予权限,则应通过调用 requestPermissions 方法获得权限,并将权限名称作为字符串数组和请求代码传递

之后 将向用户显示一个对话框并询问他们是否授予权限

然后一个接口 onRequestPermissionResult 将被调用,你应该在你的活动类中实现它

之后 如果用户授予它,您可以访问所请求的权限

【讨论】:

    【解决方案2】:

    我添加了 android sdk > 22 的权限

    这段代码完美运行

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

    【讨论】:

      猜你喜欢
      • 2018-03-05
      • 2019-05-07
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      相关资源
      最近更新 更多