我正在制作一个照片应用程序,在第一个活动中用户拍照(他可以在ImageView中看到图片),在他选择的第二个活动中与谁共享图像,在第三个活动中他应该能够在不同的ImageView中再次看到图像,而不是第一次添加一些数据。我知道如何通过意图将位图从一个活动移动到下一个活动,但如果我想将它发送到我的用户路径的第三个活动,该怎么做?如果我是startActivity(意图)它将跳过我的第二个活动,如果我没有把它第3个活动显示我一个空的ImageView ..有人可以帮我告诉我如何自动加载(没有用户交互)的方法这张照片在第1和第3活动和一些例子中?
我已经在阅读有关如何转换为Base64并再次加载的帖子,但他们的示例正在使用手机内存中的图像,在我的情况下是用户刚刚拍摄的图片,所以原则上我不要我不知道图像文件的名称..
非常感谢!
答案 0 :(得分:0)
实际上在第二个活动中,您需要从第一个活动中获取Intent并完成您的工作,然后创建新的Intent并将您的图像放入其中,最后使用新意图启动第三个活动。
在第二项活动中:
Intent firstToSecodeIntent = getIntent();
// some codes
Intent secondToThirdIntent = new Intent(this, ThirdActivity.class);
Intent.putExtra("image", /*your Image object*/);
startActivity(secondToThirdIntent);
在第三项活动中:
Intent secondToThirdIntent = getIntent();
// get your image and set it into your imageView
答案 1 :(得分:0)
在您的Custome Catch文件夹中添加此图像
在外部或内部存储中制作文件夹
然后保存将由相机内的文件夹捕获的图像..
public static void SaveImagecatch(Bitmap finalBitmap) throws IOException {
File Folder = new File(Environment.getExternalStorageDirectory() + "/data/Catch");
if (Folder.mkdir()) {
nomediaFile = new File(Environment.getExternalStorageDirectory() + "/data/Catch/" + NOMEDIA);
if (!nomediaFile.exists()) {
nomediaFile.createNewFile();
}
}
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/data/Catch");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-" + n + ".jpg";
File file = new File(myDir, fname);
Catch_uri = Uri.parse("file://" + myDir + "/" + fname);
if (file.exists()) file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
Log.e("yes", "yes");
} catch (Exception e) {
e.printStackTrace();
Log.e("no", "no");
}
}
然后..从您保存的图像的Uri路径获取图像。
Uri imageUri = Catch_uri;
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
Imageview my_img_view = (Imageview ) findViewById (R.id.my_img_view);
my_img_view.setImageBitmap(bitmap);
这是为我工作..我希望这对你有帮助