检查控件放置在Android屏幕 [英] Check Widget is Placed on Android Screen

查看:83
本文介绍了检查控件放置在Android屏幕的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁能告诉我如何检查我的小部件被放置在主屏幕上?

Can someone tell me how to check that my widget have been placed on the homescreen?

我有一些code。在我的应用程序,如果小部件被放置在主屏幕上应该只运行。

I have some code in my app that should run only if the widget is placed on the homescreen.

推荐答案

您需要自己存储的信息。我通常使用的应用程序preferences,但你可以使用任何东西。一般来说Widget使用服务进行通信,所以您的code,做的东西很可能在一个服务,但使用preference让您的应用程序的任何部分来访问这一点。

You need to store that information yourself. I usually use the application preferences, but you could use anything. Generally widgets use services to communicate, so your code that does stuff is likely in a service, but using the preference allows any portion of your app to access this.

在扩展AppWidgetProvider的onEnabled窗口小部件类被称为当小部件被放在一个主屏幕和onDeleted(通常)被称为时,它的去除。在删除所有副本onDisabled被调用。

In your widget class that extends AppWidgetProvider the onEnabled is called when the widget is put on a homescreen and the onDeleted is (usually) called when it's removed. onDisabled is called when all copies are removed.

因此​​,在小部件提供商的code:

So in the code of your widget provider:

@Override
public void onEnabled(Context context) {
    super.onEnabled(context);
    setWidgetActive(true);
    context.startService(new Intent(appContext, WidgetUpdateService.class));
}

@Override
public void onDisabled(Context context) {
    Context appContext = context.getApplicationContext();
    setWidgetActive(false);
    context.stopService(new Intent(appContext, WidgetUpdateService.class));
    super.onDisabled(context);
}

private void setWidgetActive(boolean active){
    Context appContext = context.getApplicationContext();
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(appContext);
    SharedPreferences.Editor edit = prefs.edit();
    edit.putBoolean(Constants.WIDGET_ACTIVE, active);
    edit.commit();
}

在其他地方code,你会检查是否该控件是活动的:

Elsewhere in code, you would check to see if the widget is active by:

public boolean isWidgetActive(Context context){
    Context appContext = context.getApplicationContext();
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    return prefs.getBoolean(Constants.WIDGET_ACTIVE, false);
}

这篇关于检查控件放置在Android屏幕的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆