我有一个测试动态壁纸,我希望从一项活动开始。目前,当我在我的模拟器上运行项目时,它立即发现自己在动态壁纸选择器中。在任何地方搜索过后,我仍然无法找到一种方法,只有在按下主要活动中的按钮后才能显示它。
我尝试在我的主要活动中引入静态布尔值,isnotpressed,并在按钮onClick()中将其设置为false。然后我在我的wallpaperservice类中使用了stopSelf(),而isnotpressed是真的。不幸的是,这一切都无济于事,我认为无论如何我都不会以正确的方式解决这个问题。我也尝试了this,但它也没有用。任何帮助都会在这里深表感谢。
以下是主要活动:
public class TestProjectActivity extends Activity{
static boolean isnotPressed;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
isnotPressed = true;
final Button b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
isnotPressed = false;
}
});
}
}
这是壁纸服务的一部分:
public class MyWallpaperService extends WallpaperService {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
while(TestProjectActivity.isnotPressed){stopSelf();}
}
答案 0 :(得分:0)
试试这个:
Intent i = new Intent();
if (Build.VERSION.SDK_INT > 15)
{
i.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
String pkg = MyPreferencesActivity.class.getPackage().getName();
String cls = MyPreferencesActivity.class.getCanonicalName();
i.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(pkg, cls));
}
else
{
i.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
}
startActivityForResult(i, 0);