节省 image\file

Saving image\file

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

我需要在这里修复什么? 或者作为一个选项 - 使用另一个示例保存到 internal\external 个文件

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();
        }
        }

    }

以及来自清单的权限:

<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" />

谢谢

您应该放置 uses-permission-sdk-23 标签并设置您想要的权限。

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

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

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

然后将调用 onRequestPermissionResult 接口,您应该将其实现到您的 activity class

之后 如果用户授予,您可以获得请求的权限

我添加了 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
                                    );

                    }