保存图像\文件

时间:2016-07-09 18:20:29

标签: android external internal saving-data

问题是将图像保存到存储中 此代码工作正常,但不适用于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" />

感谢名单

2 个答案:

答案 0 :(得分:0)

您应该使用uses-permission-sdk-23标记并设置所需的权限。

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

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

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

然后将调用onRequestPermissionResult接口,您应该将其实现到您的活动类中

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

答案 1 :(得分:0)

我为android sdk添加了权限&gt; 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
                                    );

                    }