Tôi đang sử dụng DownloadManager để tải hình ảnh xuống thư viện của hệ thống và sau đó trong Bộ thu phát sóng (khi tải xuống thành công) bằng Intent để đặt hình ảnh làm hình nền.Nhận URI nội dung từ URI tệp?
Mọi thứ đều hoạt động tốt nhưng sau đó gần đây trên 4.4 tôi bắt đầu có ngoại lệ trong ứng dụng Ảnh/Google + vì ứng dụng mong đợi URI nội dung chứ không phải URI tệp.
Vì vậy, câu hỏi của tôi là nếu có ai biết cách chuyển đổi đường dẫn tệp/URI đầy đủ (tệp: //) thành URI kiểu nội dung (content: //)?
Xin lỗi vì thiếu mã nguồn, tôi rời khỏi máy tính có nguồn, nhưng tôi hy vọng câu hỏi có ý nghĩa mà không có nó, lấy uri kiểu nội dung từ một đường dẫn đầy đủ.
EDIT:
Những hình ảnh được sao chép vào thư viện hoặc media gallery của hệ thống, không được lưu trong ứng dụng của tôi storeage nội bộ.
Dưới đây là một ví dụ về những gì tôi muốn chuyển đổi:
file:///storage/emulated/0/Pictures/Rockstar/image.jpg
để
content://media/internal/images/media/445
EDIT 2:
Đây là lỗi mà tôi nhận được từ ứng dụng Google+ :
04-21 10:50:35.090: E/AndroidRuntime(7220): FATAL EXCEPTION: main
04-21 10:50:35.090: E/AndroidRuntime(7220): Process: com.google.android.apps.plus, PID: 7220
04-21 10:50:35.090: E/AndroidRuntime(7220): java.lang.RuntimeException: Unable to resume activity
{com.google.android.apps.plus/com.google.android.apps.photos.phone.SetWallpaperActivity}:
java.lang.IllegalArgumentException: Image URI must be of the content scheme type
Đây là mã mà tôi sử dụng để cho phép người dùng thiết lập các hình nền:
String uriString = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
Uri u = Uri.parse(uriString);
Intent wall_intent = new Intent(Intent.ACTION_ATTACH_DATA);
wall_intent.setDataAndType(u, "image/*");
wall_intent.putExtra("mimeType", "image/*");
Intent chooserIntent = Intent.createChooser(wall_intent,
"Set As");
chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
context.startActivity(chooserIntent);
}
đâu uriString
là:
file:///storage/emulated/0/Pictures/Rockstar/image.jpg
thx cho bạn post – NickUnuchek