我在过去几周内(严肃地)在网上搜索,但我找不到我需要的东西。我只想启动与设置为操作相对应的意图。它通常提供设置为壁纸或设置为联系人图片。然后,如果设备上安装了更多应用程序,也可以列出它们。
这是我想要的一个例子:
我确切地说我需要支持API级别14及更高级别。 我发现getCropAndSetWallpaperIntent 但它仅适用于内容URI ,这对我来说是一个问题,并且只能在API lvl 19及更高版本上使用。
答案 0 :(得分:12)
我自己找到了答案:
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
intent.setDataAndType(imageUri, "image/*");
intent.putExtra("jpg", "image/*");
startActivityForResult(Intent.createChooser(intent,
getString(R.string.set_as)), REQUEST_ID_SET_AS_WALLPAPER);
您只需确保uri是公开的,并且可以通过用户选择的裁剪应用程序访问。
答案 1 :(得分:0)
这个解决方案适用于Uri:
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
intent.setDataAndType(contentUri, "image/*");
intent.putExtra("mimeType", "image/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(
intent, "Set as:"));
答案 2 :(得分:0)
这对我有用:
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
intent.addCategory(Intent.CATEGORY_DEFAULT);
//can't use normal URI, because it requires the Uri from file
intent.setDataAndType(Uri.fromFile(new File(uriOfImage)),"image/*");
intent.putExtra("mimeType","image/*");
startActivity(Intent.createChooser(intent,"Set Image"));
您可以检查您传递的URI是否应包含'file://'前缀(如果没有该前缀,则无效)。