gpt4 book ai didi

android - 通过单击小部件开始 Activity

转载 作者:IT老高 更新时间:2023-10-28 22:23:39 25 4
gpt4 key购买 nike

我是 Android 编程的新手,我尝试做一个小部件,它能够从 ISP 获取一些关于我的帐户的数据。有很多未知的事情怎么做,但我做了一些事情——我有一个带有配置 Activity 的小部件,用户应该在其中输入登录名和密码。小部件将数据存储在 SharedPerferences 中,当需要更新小部件时,我使用服务启动 AsyncTask 以从 ISP 获取帐户数据。现在我想通过单击小部件来启动一个 Activity 。我已经尝试了在此站点上找到的所有建议,并且小部件无法启动 Activity 。我的小部件基于放置在这里的另一个小部件 https://github.com/Arturus/MetrikaWidget .我不明白我应该通过单击我的小部件来更改什么以及在哪里开始 Activity 。谢谢。

更新:我的更新功能,我建议我应该放置 PendingIntent

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
Log.d(TAG, "onUpdate");

for (int appWidgetId : appWidgetIds)
{
updateAppWidget(context, appWidgetManager, appWidgetId);
}

/* An updateAppWidget functions looks like as:

Intent intent = new Intent(context, UpdateWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
context.startService(intent);
*/

Intent intent = new Intent(context, DetailedStatActivity.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.layout);

views.setOnClickPendingIntent(R.id.layout, pendingIntent);

ComponentName componentName = new ComponentName(context.getPackageName(), WidgetProvider.class.getName());

appWidgetManager.updateAppWidget(componentName, views);
}

最佳答案

在您的小部件 AppWidgetProvider 类的 onUpdate() 方法中使用此代码段:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
Intent configIntent = new Intent(context, Activity.class);

PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);

remoteViews.setOnClickPendingIntent(R.id.widget, configPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}

这里 widgetlayout 是您的小部件布局的名称,而 R.id.widget 是它的父布局 ID。

编辑:
现在,我看到了您添加到问题中的代码。您会这样做:

PendingIntent.getActivity(context, 0, configIntent, 0);

(那个开始的 Activity )而不是

PendingIntent.getService(...);

尝试启动服务。祝你好运。

引用文献:
doityourselfandroid.com

helloandroid.com

关于android - 通过单击小部件开始 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com