将位图发送到图像选取器/图库应用程序

时间:2015-08-01 04:00:44

标签: android android-intent bitmap icons send

我正在尝试在我的应用中添加一个选项,将我的应用内的图片发送到其他应用,例如图库或图片选择器/选择器。例如,第三方启动器,它想要选择我的应用程序内的图标。

我正在使用RecyclerView网格来显示图标列表。

这是我加载图标的代码:

icons = mContext.getResources().getStringArray(R.array.icons);
list = new ArrayList<String>(Arrays.asList(iconNames));

loadIcon(list);

private void loadIcon(List<String> list) {
    mThumbs = new ArrayList<>();    

    for (String extra : list) {
        int res = mContext.getResources().getIdentifier(extra, "drawable", p);
        if (res != 0) {
            final int thumbRes = mContext.getResources().getIdentifier(extra, "drawable", p);
            if (thumbRes != 0)
                mThumbs.add(thumbRes);
        }
    }
}

这是网格项OnClick中的代码:

Intent intent = new Intent();
Bitmap bitmap = null;

try {
    bitmap = BitmapFactory.decodeResource(mContext.getResources(), mThumbs.get(position));
} catch (Exception e) {
    Log.v("Icons Picker Error", "Picker error: " + Log.getStackTraceString(e));
}

if (bitmap != null) {
    intent.putExtra("icon", bitmap);
    mContext.setResult(Activity.RESULT_OK, intent);
} else {
    mContext.setResult(Activity.RESULT_CANCELED, intent);
}

mContext.finish();

显然,图标位图已正确创建,但在尝试将其发送到选择器时,不会发送任何内容。

我不确定代码中有什么问题,但我希望有人可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以显示选择器(显示所有能够执行任务的应用程序供用户选择)。这是一个代码片段:

        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
        shareIntent.setType("image/*");
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        startActivity(Intent.createChooser(shareIntent, "Choose an app to share the image"));

为此,您需要传递位图的Uri。实现此目的的一种方法是将位图保存在临时文件中,然后使用 FileProvider.getUriForFile()来获取临时文件的uri。

祝你好运

克莱夫