So, there are two questions that coincide with this ( How to use the getCropAndSetWallpaperIntent method in WallpaperManager? And How to use getCropAndSetWallpaperIntent? ), But there are no answers to both of them. In answer to this question, I ask: how to make this method work.
http://developer.android.com/reference/android/app/WallpaperManager.html#getCropAndSetWallpaperIntent(android.net.Uri) which does not help my brains.
And it does not work
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 shows this
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)
So, according to the documentation "The URI of the image to be set in intent. It is necessary that the URI of the content and its provider must resolve its type to" image / * ""
Image is in .jpg format. I am going to continue resolving this tomorrow. I just hoped that someone smarter knows the answer to my question.
EDIT / UPDATE 1: So I managed to change uri to Uri content, I think so. It used it - stack overflow.site/questions/1191429 / ...
Now he shows it
java.lang.IllegalArgumentException: Cannot use passed URI to set wallpaper; check that the type returned by ContentProvider matches image
I tried to check the type using ContentResolver getType (contentURI), it returned null. Now I will try to find how to change this to an image / *
The code so far looks like this:
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);
Thanks.
EDIT / UPDATE 2: Created a new question about my new problem here: How to change image type / *