如何启动"设置为"意图(壁纸,联系人图片等)

时间:2014-10-30 21:02:28

标签: android android-intent wallpaper

我在过去几周内(严肃地)在网上搜索,但我找不到我需要的东西。我只想启动与设置为操作相对应的意图。它通常提供设置为壁纸设置为联系人图片。然后,如果设备上安装了更多应用程序,也可以列出它们。

这是我想要的一个例子:

enter image description here

我确切地说我需要支持API级别14及更高级别。 我发现getCropAndSetWallpaperIntent 但它仅适用于内容URI ,这对我来说是一个问题,并且只能在API lvl 19及更高版本上使用。

3 个答案:

答案 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://'前缀(如果没有该前缀,则无效)。