我正在用相机(手机)拍照,然后我需要将它设置为壁纸但让我崩溃。
当我使用setWallpaper()
时,它会说我The method setWallpaper(Bitmap) from the type Context is deprecated
。
这是我的代码:
public class Camera extends Activity implements View.OnClickListener {
ImageButton ib;
Button b;
ImageView iv;
Intent i;
final static int cameraData = 0;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo);
initialize();
}
private void initialize() {
iv = (ImageView) findViewById(R.id.IVReturnedPic);
ib = (ImageButton) findViewById(R.id.IBTakePic);
b = (Button) findViewById(R.id.btnSetWall);
b.setOnClickListener(this);
ib.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSetWall:
try {
getApplicationContext().setWallpaper(bmp);
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.IBTakePic:
i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, cameraData);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
bmp = (Bitmap) extras.get("data");
iv.setImageBitmap(bmp);
}
}
}
让我从这里setWallpaper()
崩溃:
getApplicationContext().setWallpaper(bmp);
注意:在此代码中,我使用的是View.OnClickListener
。
答案 0 :(得分:1)
请尝试这种方式,希望这有助于您解决问题。
在类级别声明WallpaperManager对象:
private WallpaperManager wallpaperManager;
在initialize()中初始化WallpaperManager对象:
private void initialize() {
wallpaperManager = WallpaperManager.getInstance(this);
}
将位图设置为wallpaperManager对象。
case R.id.btnSetWall:
try {
if(bmp!=null){
wallpaperManager.setBitmap(bmp);
}else{
// write your bitmap null handle code here.
}
} catch (IOException e) {
Log.e(TAG, "Cannot set image as wallpaper", e);
}
break;
将此权限添加到AndroidManifest.xml:
<uses-permission android:name="android.permission.SET_WALLPAPER" />
答案 1 :(得分:0)
我在设置textarea文本时在Android应用程序中遇到了同样的问题.....但我能够通过 OnCreate 方法中的对象引用来修复它!!!!!!然后通过使用该全局引用,我能够设置 TextArea文本属性,你必须看起来类似的解决方案......
答案 2 :(得分:0)
如果您开发更高的API级别5,则需要使用WallpaperManager类:
WallpaperManager mManager = WallpaperManager.getInstance(getApplicationContext());
try {
mManager.setResource(R.drawable.yourDrawable);
} catch (IOException e) {
//warning for the user
e.printStackTrace();
}
要使用管理器,您需要在清单中设置权限SET_WALLPAPER。此外,如果您在API级别5下开发并且您想要使用您使用的方法,则还必须设置权限。
答案 3 :(得分:0)
您是否已将壁纸权限添加到清单?
<uses-permission android:name="android.permission.SET_WALLPAPER" />