android - 如何使用 Intent.ATTACH_DATA

标签 android

我正在尝试为图像实现“设置为”功能。我正在使用 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/

相关文章:

安卓直播上传

Java Pubnub 订阅 channel

Android Cooliris Gallery 开发者文档

android - 第一次安装 Android 应用程序时,如何从 Firebase 实时数据库获取数据库

java - Android APP主线程内更新进度条

java - 如何使用微调器更改背景图像

java - 如何在使用SAXParser解析XML中添加AsyncTask?

java - 尝试从网站获取网页时访问被拒绝

java - Android Studio 导致应用程序接收致命信号 6 (SIGABRT),代码 -6 (SI_TKILL)

java - 当 Activity 在其 AsyncTask 运行时被销毁时,内存中会发生什么?