我正在尝试为图像实现“设置为”功能。我正在使用 Intent.ATTACH_DATA 这样用户至少可以选择联系人照片和墙纸。我应该通过的额外内容让我感到困惑。如果我正确阅读了文档,
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
intent.setType("image/*");
intent.setData(mImageCaptureUri);
startActivity(Intent.createChooser(intent, "hey"));
应该是全部。这适用于墙纸,但使用百万像素数据时,应用程序会崩溃,因为找不到裁剪 Activity 。有人有工作的例子吗?官方图库应用确实设法找到了 camera.crop Activity ...
也欢迎提供有关在哪里可以找到详尽的系统 Intent 文档的一般提示。
最佳答案
经过 android 源代码的漫长而曲折的道路后,我在默认图库 (gallery3d) 应用程序中找到了实际代码。我在自己的应用中适配使用,为了在其他应用中导入时方便,又重写了一遍。如果您使用或欣赏这个,我请您对这个答案投赞成票。
改编自:gallery3d source at grepcode
用法:更改第一行以匹配照片的完整路径(以/mnt/开头)。 将字符串“set_as”添加到您的 strings.xml 作为操作选择器标题。
String absolutepath = MyApplication.appRootDir + relpath;//change for your application
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
MimeTypeMap map = MimeTypeMap.getSingleton();
String ext = absolutepath.substring(absolutepath.lastIndexOf('.') + 1);
String mimeType = map.getMimeTypeFromExtension(ext);
Uri uri = Uri.fromFile(new File(absolutepath));
intent.setDataAndType(uri, mimeType);
intent.putExtra("mimeType", mimeType);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Activity activity = (Activity) this;
activity.startActivity(Intent.createChooser(
intent, activity.getString(R.string.set_as)));
关于android - 如何使用 Intent.ATTACH_DATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091980/