Vì vậy, có hai câu hỏi giống như vậy ( How to use getCropAndSetWallpaperIntent method in WallpaperManager? VÀ How to use getCropAndSetWallpaperIntent? ), nhưng không có câu trả lời cho cả hai câu hỏi. Với hy vọng một câu trả lời tôi đang yêu cầu điều này - làm thế nào để có được phương pháp này để làm việc.Cách getCropAndSetWallpaperIntent (Uri imageUri) hoạt động?
http://developer.android.com/reference/android/app/WallpaperManager.html#getCropAndSetWallpaperIntent(android.net.Uri) không giúp não của tôi.
Và điều này không làm việc
WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this);
Uri uri = Uri.parse("android.resource://lv.revo.inspicfootballhd/drawable/v1");
Intent intent = new Intent(wallpaperManager.getCropAndSetWallpaperIntent(uri));
startActivity(intent);
logcat lãm này
5891-5891/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: lv.revo.inspicfootballhd, PID: 5891
java.lang.IllegalArgumentException: Image URI must be of the content scheme type
at android.app.WallpaperManager.getCropAndSetWallpaperIntent(WallpaperManager.java:760)
at lv.revo.inspicfootballhd.MainActivity.onTouch(MainActivity.java:236)
at android.view.View.dispatchTouchEvent(View.java:7701)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2338)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568)
at android.app.Activity.dispatchTouchEvent(Activity.java:2465)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2285)
at android.view.View.dispatchPointerEvent(View.java:7886)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5532)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5512)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5483)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5612)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:138)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:5144)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
at dalvik.system.NativeStart.main(Native Method)
Vì vậy, theo tài liệu "Những hình ảnh URI mà sẽ được thiết lập trong mục đích. Phải là một nội dung URI và nhà cung cấp phải giải quyết loại của nó thành "hình ảnh/*" "
Hình ảnh ở định dạng .jpg. Tôi sẽ tiếp tục tìm một giải pháp cho ngày mai này. Tôi chỉ hy vọng rằng ai đó thông minh hơn sẽ biết câu trả lời cho câu hỏi của tôi.
EDIT/UPDATE 1: Vì vậy, tôi cố gắng thay đổi uri đến Nội dung Uri, tôi tin như vậy. Đã làm điều đó bằng này - https://stackoverflow.com/a/23223556/2727408
Bây giờ nó thấy điều này
java.lang.IllegalArgumentException: Cannot use passed URI to set wallpaper; check that the type returned by ContentProvider matches image/*
at android.app.WallpaperManager.getCropAndSetWallpaperIntent(WallpaperManager.java:792)
at lv.revo.inspicfootballhd.MainActivity.onTouch(MainActivity.java:244)
Tôi cố gắng để kiểm tra các loại sử dụng ContentResolver getType (contentURI), nó trở null. Bây giờ tôi sẽ cố gắng tìm cách để thay đổi điều đó để hình ảnh/*
Mã này cho đến nay trông như thế này
Uri uri = ResourceToUri(getApplicationContext(), imageArray[j]);
File wallpaper_file = new File(uri.getPath());
Uri contentURI = getImageContentUri(getApplicationContext(), wallpaper_file.getAbsolutePath());
ContentResolver cr = this.getContentResolver();
Log.d("CONTENT TYPE: ", "IS: " + cr.getType(contentURI));
Intent intent = new Intent(wallpaperManager.getCropAndSetWallpaperIntent(contentURI));
startActivity(intent);
Cảm ơn rất xa.
EDIT/UPDATE 2: Tạo câu hỏi mới về vấn đề mới của tôi ở đây: How to change type to image/*
Cảm ơn bạn cho đến nay, tôi đã nhận lỗi khác và tôi cập nhật câu hỏi của tôi. –
Bạn nên chấp nhận câu trả lời này và mở một câu hỏi mới. Nó sẽ giúp những người khác tìm kiếm câu trả lời cho câu hỏi thứ 2 của bạn cũng như thu hút sự chú ý đến vấn đề mới của bạn. – Tushar