Android:你如何从按钮开始壁纸服务?

时间:2012-02-24 21:57:59

标签: android

我有一个测试动态壁纸,我希望从一项活动开始。目前,当我在我的模拟器上运行项目时,它立即发现自己在动态壁纸选择器中。在任何地方搜索过后,我仍然无法找到一种方法,只有在按下主要活动中的按钮后才能显示它。

我尝试在我的主要活动中引入静态布尔值,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();}


}

1 个答案:

答案 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);