2014-10-30 12 views
5

我在過去的幾周(嚴重)在網上搜索,但我找不到我需要的。我只是想開始一個對應於設置爲行動的意圖。它通常提供設置爲壁紙設置爲聯繫圖片。然後,如果設備上安裝了更多的應用程序,它們也可以列出。如何開始「設置爲」的意圖(壁紙,聯繫人圖片等)

這裏是我想要的一個例子:

enter image description here

我準確的,我需要支持API級別14及更高版本。 我發現getCropAndSetWallpaperIntent,但它只適用於內容URI這對我來說是一個問題,並且只適用於API lvl 19和更高版本。

+0

[android設置圖像作爲聯繫人圖標/壁紙]的可能的副本(http://stackoverflow.com/questions/7284142/android-set-image-as-contact-icon-wallpaper) – cygery 2014-10-30 21:50:34

回答

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

它適用於設置與主屏幕選項的壁紙,但它不能很好地工作,同時設置鎖屏選項的壁紙。爲什麼? – 2015-09-19 05:59:35

+1

鎖定屏幕壁紙不是Android股票的一部分。它通常由智能手機制造商添加。因此,我認爲製造商需要爲此目的添加鎖屏選項。可能有一個參數需要考慮到這一點,但我知道的沒有。 – Kalvn 2015-09-29 10:28:28

0

該解決方案爲我與烏里:

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,應包含 '文件://'前綴(它不工作沒有)。