我在我的应用中创建了一个方法,将我的布局保存为图像并将其显示在图库中。 我试图打开它,但我很难完成所有教程和不同的方法...
这是我的代码:
SimpleDateFormat mTimeFormat = new SimpleDateFormat("dd-MM-yyyy");
Date mTime = new Date();
String mStringTime = mTimeFormat.format(mTime);
String fileFolder = "/orders";
String fileName = "/order-"+mStringTime;
File filePath = new File("/sdcard"+fileFolder+fileName+".png");
Uri fileUri = Uri.fromFile(filePath);
File createFolder = new File(Environment.getExternalStorageDirectory()+fileFolder);
if (!createFolder.exists()){ //checks I don't create the same folder twice
createFolder.mkdir();
}
View orderView = findViewById(R.id.tableOrder); //this is what i shall save
orderView.setDrawingCacheEnabled(true);
Bitmap bitmap = orderView.getDrawingCache();
try {
FileOutputStream outputImage = new FileOutputStream(filePath);
bitmap.compress(CompressFormat.PNG, 10, outputImage);
outputImage.close();
orderView.invalidate();
Intent intentScanner = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intentScanner.setData(fileUri);
sendBroadcast(intentScanner);
}
catch (Exception e)
{ e.printStackTrace();
} finally{
orderView.setDrawingCacheEnabled(false);
Intent intentView = new Intent(Intent.ACTION_VIEW);
intentView.setType("image/*");
intentView.setData(fileUri);
startActivity(intentView);
}
运行应用程序时崩溃,但图像正在保存
android.content.ActivityNotFoundException: No Activity found to handle Intent
premissions:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我该怎么办?
答案 0 :(得分:6)
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, <unique_code>);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == <unique_code>) {
imageView.setImageBitmap(getPicture(data.getData()));
}
}
public static Bitmap getPicture(Uri selectedImage) {
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContext().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
return BitmapFactory.decodeFile(picturePath);
}
答案 1 :(得分:1)
要从您的代码中打开Gallery App,请调用此
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(
"content://media/internal/images/media"));
startActivity(intent);
击> <击> 撞击>
打开最近保存的图像
public void openInGallery(String imageId) {
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon().appendPath(imageId).build();
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
您只需将图片ID附加到EXTERNAL_CONTENT_URI路径的末尾即可。然后使用View操作和Uri启动Intent。
图片ID来自查询内容解析器。