我正在尝试在我的应用中添加一个选项,将我的应用内的图片发送到其他应用,例如图库或图片选择器/选择器。例如,第三方启动器,它想要选择我的应用程序内的图标。
我正在使用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();
显然,图标位图已正确创建,但在尝试将其发送到选择器时,不会发送任何内容。
我不确定代码中有什么问题,但我希望有人可以帮我解决这个问题。提前谢谢。
答案 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。
祝你好运克莱夫