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

问题描述 投票:5回答:3

我在过去的几周内(严肃地)在网上搜索,但我找不到我需要的东西。我只是想开始一个对应于set as action的intent。它通常提供设置为壁纸或设置为联系人图片。然后,如果设备上安装了更多应用程序,也可以列出它们。

这是我想要的一个例子:

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

android android-intent wallpaper
3个回答
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是公共的,并且可以通过用户选择的裁剪应用程序访问。


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:"));

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://'前缀(没有它,它不起作用)。

© www.soinside.com 2019 - 2024. All rights reserved.