我正在制作一个每隔10秒就会更换壁纸的项目 我可以使用此代码
将Bitmap数组设置为Service类resized[i]= Bitmap.createScaledBitmap(yourbitmap, 480,800, true);
Intent i = new Intent(MainActivity.this,WallService.class);
i.putExtra("Imagess", resized);
startService(i);
在服务类中,我正在使用此代码:
String[] Bits = intent.getStringArrayExtra("Imagess");
for(int i =0; i<Bits.length;i++){
getApplicationContext().setWallpaper(Bits[i]);
Thread.sleep(10000);
}
此行中出错。上下文类型中的方法setWallpaper(Bitmap)不适用于参数(String)。所以我必须这样做,以便我可以通过将String []连接到Bitmap []
来设置壁纸更新1:
Bitmap[] Bits = (Bitmap[]) intent.getExtras().getParcelableArray("Imagess");
for(int i =0; i<Bits.length;i++){
try {
getApplicationContext().setWallpaper(Bits[i]);
Thread.sleep(10000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:0)
使用此代码行是错误的:
String[] Bits = intent.getStringArrayExtra("Imagess");
您将Parcelable[]
置于意图附加内容中,但尝试获取String []。
使用:
Bitmap[] Bits = (Bitmap[]) getIntent().getExtras().getParcelableArray("Imagess");
<强>更新强>
如果您在Bits
方法中初始化Service onStart(Intent intent, int startId)
数组,请更新以下行:
Bitmap[] Bits = (Bitmap[]) getIntent().getExtras().getParcelableArray("Imagess");
为:
Bitmap[] Bits = (Bitmap[]) intent.getExtras().getParcelableArray("Imagess");
如您所见,我使用getIntent()
方法中的intent
参数替换了onStart(Intent intent, int startId)
方法