2012-06-18 23 views
6

Tôi đang cố gắng triển khai chức năng "đặt làm" cho hình ảnh. Tôi đang sử dụng Intent.ATTACH_DATA để người dùng ít nhất cũng có thể chọn ảnh và hình nền liên hệ. Các tính năng bổ sung tôi nên vượt qua nhầm lẫn với tôi. Nếu tôi đọc tài liệu ngay,Cách sử dụng Intent.ATTACH_DATA

Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); 
    intent.setType("image/*"); 
intent.setData(mImageCaptureUri); 
     startActivity(Intent.createChooser(intent, "hey")); 

Nên có tất cả. Điều này làm việc cho hình nền, nhưng với dữ liệu megapixel, các ứng dụng bị treo, bởi vì không có hoạt động cây trồng có thể được tìm thấy. Có ai đó có một ví dụ làm việc? Ứng dụng thư viện chính thức không quản lý để tìm hoạt động của camera.crop ...

Một gợi ý chung về nơi tìm tài liệu về mục đích hệ thống phức tạp cũng được hoan nghênh.

Trả lời

13

Sau một con đường dài và quanh co thông qua nguồn Android, tôi đã tìm thấy mã thực tế trong ứng dụng thư viện mặc định (gallery3d). Tôi thích nghi để sử dụng trong ứng dụng của riêng tôi, và viết lại nó một lần nữa để thuận tiện khi nhập vào các ứng dụng khác. Nếu bạn sử dụng hoặc đánh giá cao điều này, tôi yêu cầu bạn upvote câu trả lời này.

Phỏng theo: gallery3d source at grepcode

Cách sử dụng: thay đổi dòng đầu tiên để phù hợp với đường dẫn đầy đủ (bắt đầu với/mnt /) của ảnh. thêm chuỗi "set_as" vào strings.xml của bạn làm tiêu đề trình chọn hành động.

String absolutepath = MyApplication.appRootDir + relpath;//change for your application 
    Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); 
    MimeTypeMap map = MimeTypeMap.getSingleton(); 
    String ext = absolutepath.substring(absolutepath.lastIndexOf('.') + 1); 
    String mimeType = map.getMimeTypeFromExtension(ext); 
    Uri uri = Uri.fromFile(new File(absolutepath)); 
    intent.setDataAndType(uri, mimeType); 
    intent.putExtra("mimeType", mimeType); 
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    Activity activity = (Activity) this; 
    activity.startActivity(Intent.createChooser(
      intent, activity.getString(R.string.set_as))); 
+0

Tôi nghĩ rằng điều này làm việc trong khi mọi câu trả lời khác trên SO không được beacuse nó thêm tập tin: // trước khi uri – user11230