1
이미지 갤러리에서 선택한 경로가 문자열 형식입니다. 이제 그 경로에서 갤러리 또는 로컬 저장소에서 이미지 드로어 블 또는 비트 맵을 가져 와서 배경 화면으로 설정하려고합니다.로컬 장치의 경로에서 배경 무늬로 설정할 이미지를 얻으십시오.
if (!wallpaperPath.equals("") && wallpaperPath.length() > 0) {
Bitmap b = BitmapFactory.decodeFile(wallpaperPath);
WallpaperManager wallpaperManager = (WallpaperManager.getInstance(ScrollingActivity.this));
try {
wallpaperManager.setBitmap(b);
} catch (IOException e) {
e.printStackTrace();
}
그러나 이것은 나에게 오류
java.lang.RuntimeException: Error receiving broadcast Intent { act=WIFICHANGE flg=0x10 (has extras) } in [email protected]
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:874)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
at android.app.WallpaperManager.setWallpaper(WallpaperManager.java:1524)
at android.app.WallpaperManager.setBitmap(WallpaperManager.java:1278)
at android.app.WallpaperManager.setBitmap(WallpaperManager.java:1207)
at delusions.com.myapplication.ScrollingActivity$2.onReceive(ScrollingActivity.java:132)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:864)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
}
을해야 할 일을해야 올바른 방법을 제공합니다 : 내가 무슨 짓을
은?
코드는 배경 화면을 얻을 :
case R.id.btn_wallpaper:
Intent imageIntent = new Intent(Intent.ACTION_GET_CONTENT);
imageIntent.setType("image/*");
Intent chooser = Intent.createChooser(imageIntent,"Select New Wallpaper");
startActivityForResult(chooser,RESULT_WALLPAPER);
break;
및하여 onActivityResult에서
() 난 단지에 유래에서 내 질문에 대한 답을 찾았지만 나는 한 곳에서 링크를 놓친if(data!=null) {
Bundle bundle = data.getExtras();
System.out.println(" bundle string : "+ bundle.getString("data"));
System.out.println(" check here :"+ data.getExtras()!=null?"OK":"NOTOK");
System.out.println(" check here key 2:"+ data.getExtras().containsKey("dat")!=null?"OK":"NOTOK");
Bitmap imagedata = (Bitmap) data.getExtras().get("dat");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if(imagedata!=null)
imagedata.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
tv_Ringtone.setText(encodedImage);
Prefs.writeString(this,Defines.IMAGE_DATA,encodedImage);
Uri wallpaperURI = data.getData();
String wallpaperPath = wallpaperURI.getPath();
System.out.println("Wallpaper path encoded: "+ wallpaperURI.getEncodedPath());
System.out.println("Wallpaper path : " + wallpaperPath);
Prefs.writeString(this, Defines.WALLPAPER_PATH, wallpaperPath);
iv_newWallpaper.setImageURI(wallpaperURI);
}
이 활동에 대한 전체 코드를 추가 할 것입니다/조각 –
선택한 벽지의 경로가/문서/이미지 : 9418 – beginner
이 선택한 이미지에 대한 코드를 추가로 설정하십시오 당신이 시도한 이미지 뷰에서 선택된 이미지 –