处理主屏幕小部件中的按钮单击

哥布特龙

我正在尝试制作一个主屏幕小部件,该小部件将打开和关闭gps(设置中的位置)。我仍然不明白如何处理按钮单击事件。

我从在线教程中获取了此代码。

public class LocationWidget extends AppWidgetProvider {
private static String SYNC_CLICKED = "automaticWidgetSyncButtonClick";

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int count = appWidgetIds.length;
    String status;
    LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    for (int i = 0; i < count; i++) {
        int widgetId = appWidgetIds[i];
        if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            status = "OFF";
        } else {
            status = "ON";
        }
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
        remoteViews.setTextViewText(R.id.textView, status);

        Intent intent = new Intent(context, LocationWidget.class);
        intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        remoteViews.setOnClickPendingIntent(R.id.actionButton, pendingIntent);
        appWidgetManager.updateAppWidget(widgetId, remoteViews);
    }
}

public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
    remoteViews.setTextViewText(R.id.textView, "Button clicked");
    Log.v("ACTION", intent.getAction());
}

}

在onReceive内部,Log.v返回“ ACTION:android.appwidget.action.APPWIDGET_UPDATE”。因此,我需要帮助以使按钮的行为与单击时所需的行为相同。有人可以解释如何以及为什么吗?

哥布特龙

我知道了。

public class LocationWidget extends AppWidgetProvider {
    public static String WIDGET_BUTTON = "MY_PACKAGE_NAME.WIDGET_BUTTON";

    private static final String ACTION_CLICK = "ACTION_CLICK";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int count = appWidgetIds.length;
        String status;
        LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

        for (int i = 0; i < count; i++) {
            int widgetId = appWidgetIds[i];
            if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                status = "OFF";
            } else {
                status = "ON";
            }
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);


            if (status == "ON") {
                remoteViews.setInt(R.id.actionButton, "setBackgroundColor", Color.GREEN);
                remoteViews.setTextViewText(R.id.actionButton, "Location Service On");
            }
            if (status == "OFF") {
                remoteViews.setInt(R.id.actionButton, "setBackgroundColor", Color.RED);
                remoteViews.setTextViewText(R.id.actionButton, "Location Service Off");
            }
            Intent intent = new Intent(context, LocationWidget.class);
            intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

            String buttonclick = "buttonclick";

            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            remoteViews.setOnClickPendingIntent(R.id.actionButton, getPendingSelfIntent(context, buttonclick));

            appWidgetManager.updateAppWidget(widgetId, remoteViews);
        }
    }

    protected PendingIntent getPendingSelfIntent(Context context, String action) {
        Intent intent = new Intent(context, LocationWidget.class);
        intent.setAction(action);
        return PendingIntent.getBroadcast(context, 0, intent, 0);
    }

    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);


        if (intent.getAction() == "buttonclick") {
            Log.v("ACTION", "buttonclick");

            Intent callGPSSettingIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            callGPSSettingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(callGPSSettingIntent);


        }


    }




}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按下主屏幕按钮后,配置活动中的小部件ID未更新

来自分类Dev

设置活动后,小部件未显示在主屏幕中

来自分类Dev

获取我的主屏幕小部件的大小

来自分类Dev

Android主屏幕小部件-搜索

来自分类Dev

未安装主屏幕小部件

来自分类Dev

未安装主屏幕小部件

来自分类Dev

不含Java的Android主屏幕小部件

来自分类Dev

如何单击小部件中的按钮来关闭覆盖图?

来自分类Dev

单击主屏幕小部件时如何打开特定片段

来自分类Dev

小部件崩溃并且无法通过单击小部件中的按钮来启动新活动

来自分类Dev

如何在主屏幕小部件中使用按钮(例如活动)

来自分类Dev

设置活动后窗口小部件未显示在主屏幕中

来自分类Dev

如何将列表视图中的数据显示到主屏幕小部件中?

来自分类Dev

主屏幕小部件,listView显示“正在加载”

来自分类Dev

将应用小部件置于活动之外的主屏幕上

来自分类Dev

主屏幕上的类似Facebook Messenger的小部件

来自分类Dev

我的android主屏幕小部件出现了,但没有更新

来自分类Dev

在单元测试CI中模拟PyQt5 QMessageBox小部件中的按钮单击

来自分类Dev

将小部件放在主屏幕上时如何分配小部件的设置

来自分类Dev

如何通过单击按钮突出显示(选择)“文本”小部件中的文本?

来自分类Dev

GTK + 2 C-输入按下或单击按钮以从条目小部件中获取文本

来自分类Dev

GTK + 2 C-输入按下或单击按钮以从条目小部件中获取文本

来自分类Dev

如何在小部件中的按钮单击上更新我的TextView?

来自分类Dev

如何在单击小部件中的按钮时显示烤面包并打开蓝牙?

来自分类Dev

在matplotlib小部件中单击按钮时提取/打印滑块值(Python 2.7)

来自分类Dev

单击小部件后更改屏幕亮度。安卓

来自分类Dev

在屏幕之间传递数据,但使用提取的下拉按钮小部件

来自分类Dev

kivy小部件:多个按钮,居中,获取窗口/屏幕尺寸

来自分类Dev

通过在另一个屏幕中按按钮来更改Kivy按钮小部件属性

Related 相关文章

  1. 1

    按下主屏幕按钮后,配置活动中的小部件ID未更新

  2. 2

    设置活动后,小部件未显示在主屏幕中

  3. 3

    获取我的主屏幕小部件的大小

  4. 4

    Android主屏幕小部件-搜索

  5. 5

    未安装主屏幕小部件

  6. 6

    未安装主屏幕小部件

  7. 7

    不含Java的Android主屏幕小部件

  8. 8

    如何单击小部件中的按钮来关闭覆盖图?

  9. 9

    单击主屏幕小部件时如何打开特定片段

  10. 10

    小部件崩溃并且无法通过单击小部件中的按钮来启动新活动

  11. 11

    如何在主屏幕小部件中使用按钮(例如活动)

  12. 12

    设置活动后窗口小部件未显示在主屏幕中

  13. 13

    如何将列表视图中的数据显示到主屏幕小部件中?

  14. 14

    主屏幕小部件,listView显示“正在加载”

  15. 15

    将应用小部件置于活动之外的主屏幕上

  16. 16

    主屏幕上的类似Facebook Messenger的小部件

  17. 17

    我的android主屏幕小部件出现了,但没有更新

  18. 18

    在单元测试CI中模拟PyQt5 QMessageBox小部件中的按钮单击

  19. 19

    将小部件放在主屏幕上时如何分配小部件的设置

  20. 20

    如何通过单击按钮突出显示(选择)“文本”小部件中的文本?

  21. 21

    GTK + 2 C-输入按下或单击按钮以从条目小部件中获取文本

  22. 22

    GTK + 2 C-输入按下或单击按钮以从条目小部件中获取文本

  23. 23

    如何在小部件中的按钮单击上更新我的TextView?

  24. 24

    如何在单击小部件中的按钮时显示烤面包并打开蓝牙?

  25. 25

    在matplotlib小部件中单击按钮时提取/打印滑块值(Python 2.7)

  26. 26

    单击小部件后更改屏幕亮度。安卓

  27. 27

    在屏幕之间传递数据,但使用提取的下拉按钮小部件

  28. 28

    kivy小部件:多个按钮,居中,获取窗口/屏幕尺寸

  29. 29

    通过在另一个屏幕中按按钮来更改Kivy按钮小部件属性

热门标签

归档