我正在创建一个模块,例如我给了摄像机访问映像和捕获的映像,只能通过不在图库中的应用程序或文件管理器中看到捕获的图像。但是只有在像三星Mi手机的某些手机中,图像不可见,但在一个Plus和Sony图像中是可见的,为什么,它可以在某些手机中工作,而在某些手机中也不可见
我的代码:
private void createDirectoryAndSaveFile(Bitmap imageToSave) {
File direct = new File(getFilesDir() + "/CAT_IMG/");
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
String fileName = "fav" + timeStamp + ".JPG";
if (!direct.exists()) {
// File wallpaperDirectory = new File("/CAT_IMG");
direct.mkdir();
}
File file = new File(direct, fileName);
if (file.exists()) {
file.delete();
}
try {
FileOutputStream out = new FileOutputStream(file);
imageToSave.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
createDirectoryAndSaveFile(photo);
Log.e("URI", data.getExtras().get("data") + "");
}
}
您将需要权限,在AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
创建目录: -
File mydir = context.getDir("dirname", Context.MODE_PRIVATE);
if (!mydir.exists())
{
mydir.mkdirs();
}
如果要将文件存储在应用程序的根目录中,则应使用getExternalFilesDir
在应用程序的根目录中创建您的目录,例如:
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
if (!storageDir.exists()) {
storageDir.mkdirs();
}
,然后将图像文件放入目录中。也不要忘记在AndroidManifest.xml
中提供权限以读写存储,如下所示:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />