节省 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
);
}
问题是将图像保存到存储器 此代码运行良好,但不适用于 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
);
}