2014-10-30 12 views
5

Tôi đã tìm kiếm trên web trong vài tuần qua (nghiêm túc) nhưng tôi không thể tìm thấy những gì tôi cần. Tôi chỉ muốn bắt đầu một ý định tương ứng với được đặt làm hành động. Nó thường cung cấp hoặc là Đặt làm hình nền hoặc Đặt làm ảnh số liên lạc. Và sau đó, nếu có thêm ứng dụng được cài đặt trên thiết bị, chúng cũng có thể được liệt kê.Cách bắt đầu ý định "đặt làm" (hình nền, hình ảnh liên hệ, v.v.)

Dưới đây là một ví dụ về những gì tôi muốn:

enter image description here

tôi chính xác mà tôi cần để hỗ trợ mức API 14 và cao hơn. Tôi đã tìm thấy getCropAndSetWallpaperIntent nhưng nó chỉ hoạt động với nội dung URI là một vấn đề đối với tôi và chỉ có sẵn trên API lvl 19 trở lên.

+0

bản sao có thể có của [android set image làm biểu tượng liên hệ/hình nền] (http://stackoverflow.com/questions/7284142/android-set-image-as-contact-icon-wallpaper) – cygery

Trả lời

12

Tôi tìm thấy câu trả lời bằng cách tự của tôi:

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

Bạn chỉ cần có để đảm bảo rằng uri là công khai và sẽ có thể truy cập bởi các ứng dụng cây trồng được lựa chọn bởi người sử dụng.

+0

Nó hoạt động tốt để thiết lập hình nền với tùy chọn Home Screen nhưng nó không hoạt động tốt trong khi thiết lập hình nền cho Lock Screen Option. Tại sao? –

+1

Hình nền màn hình khóa không phải là một phần của Android Stock. Nó thường được thêm vào bởi các nhà sản xuất điện thoại thông minh. Vì vậy, tôi nghĩ rằng đó là tùy thuộc vào nhà sản xuất để thêm tùy chọn lockscreen vào mục đích này. Có lẽ một tham số để thiết lập để đưa điều này vào tài khoản nhưng không có gì tôi biết. – Kalvn

0

Giải pháp này làm việc cho tôi với 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

này đã làm việc cho tôi:

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

Bạn có thể kiểm tra xem các URI mà bạn vượt qua, nên chứa 'file: //' tiền tố (Nó không hoạt động nếu không có).

Các vấn đề liên quan