标签: android-appwidget

如何在首次创建应用小部件时显示活动?

首次添加到主屏幕时,需要配置我的应用小部件.我想在用户添加小部件后立即打开配置视图.

AppWidgetProvider没有onCreated事件,所以我在事件上显示了一个混淆活动onUpdate,并在SharedConfiguration其中存储一个布尔值,表示配置已经显示.有没有更简单的方法?

android android-service android-activity android-appwidget

1
推荐指数
1
解决办法
1092
查看次数

Android:配置小部件(不同小部件实例的相同 setOnClickPendingIntent 附加功能)

我正在做一些 Android 练习,但我在小部件方面遇到了问题:

目标:当用户将新的小部件添加到主页时,应用程序运行一个配置,用户可以在其中选择一个字符串。在配置过程中,必须将该字符串设置为小部件布局内唯一按钮的“文本”,并且在该按钮上应用程序必须设置一个 onclick 侦听器,该侦听器将调用另一个将字符串作为参数传递的活动。因此,当用户单击按钮时,将调用提供按钮文本的活动。主要目标是,如果我有两个小部件,每个小部件都会设置 onclick 侦听器发送不同的字符串作为参数。

代码:

int mAppWidgetId = 0;

if (extras != null) {
   mAppWidgetId = extras.getInt(
   AppWidgetManager.EXTRA_APPWIDGET_ID, 
   AppWidgetManager.INVALID_APPWIDGET_ID);
 }

String thestring = ... //this string is set dynamically by the configuration


RemoteViews views = new RemoteViews(this.getPackageName(), R.widget_profile);


    views.setTextViewText(R.id.buttonWidget, thestring);


    Intent clickIntent = new Intent(this, afterclickactivity.class);
    clickIntent.putExtra("TheString", thestring);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, clickIntent, 0);
    views.setOnClickPendingIntent(R.id.buttonWidget, pendingIntent);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
    appWidgetManager.updateAppWidget(mAppWidgetId, views);
Run Code Online (Sandbox Code Playgroud)

问题:一切似乎都工作正常,小部件位于主屏幕中,按钮上的文本是用户选择的文本,如果我添加同一小部件​​的 2 个实例,它们根据用户选择具有不同的文本。但是,当用户按下第二个小部件上的按钮时,它会启动“afterclickactivity”,其参数与 widget1 相同,忽略第二个选择的字符串。

它像是:

小部件 1:文本:string1 onclick:callActivity(string1)

小部件 2:文本:string2 …

android widget android-appwidget

1
推荐指数
1
解决办法
622
查看次数

Android:Widget、AppWidget、Fragment、Activity 和 App - 有什么区别?

我在 Java 和 C# 方面有很多经验,但我是 Android 新手。我主要使用 C#,因为我很喜欢 Control 层次结构。我喜欢本体的即插即用。我正在尝试理解这个新范式中的本体,但我可能得到了一些虚假信息。

对于应用程序,这应该是最大的组成部分。在应用程序内,可能有多个活动。一个活动可以显示多个 Fragment。AppWidgets 似乎是一种特殊情况,因为它们作为 App 的一个组件存在,但会单独显示。有人告诉我,你可以扩展 Buttons 或 ProgressBar 来创建你自己的组件,这些组件又被称为 Widgets。

正如我所说,我可能完全错了。理想情况下,我想创建自己的小部件,我可以将其放在 Fragment、AppWidget 或 Activity 上;我可以将其中的任何一个组合成一个应用程序。我发现的所有在线资源都只在 AppWidget 的意义上讨论 Widget?我提供的信息不正确吗?任何人都可以澄清本体论吗?谢谢

android android-widget android-fragments android-appwidget

1
推荐指数
1
解决办法
1055
查看次数

如何在app小部件中设置Android AnalogClock的时间?

如何AnalogClock在app小部件中设置Android的自定义时间?

作为替代方案,我正在考虑覆盖默认的AnalogClock来设置代码的时间.换句话说,我会创建自定义时钟,它从默认的View或AnalogClock扩展.然后将我的自定义时钟放在小部件布局UI上.

这可能吗?我担心RemoteViews会限制我们自己的自定义组件.

更新: 这是错误日志我首先遵循vArDo给出的解决方案.

在此输入图像描述

layout android components widget android-appwidget

0
推荐指数
1
解决办法
6203
查看次数

为什么我的 AppWidgetProvider 的 onReceive 中的这些状态变量为 null?

我有分配给 onUpdate 的变量,需要访问我的应用程序小部件提供程序类的 onReceive 的值。

public class MyWidgetProvider extends AppWidgetProvider {
    private static String name;
    private static SharedPreferences myPrefs;
    private static final String START_ACTION = "start";

    @Override
    public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
                               final int[] appWidgetIds) {
        views = new RemoteViews(context.getPackageName(), R.layout.layout_widget);
        Intent intent1 = new Intent(context, MyAppWidgetProvider.class);
        providerIntent.setAction(START_ACTION);
        pendingIntent = PendingIntent.getBroadcast(context, 0, providerIntent, 0);
        ....
        myPrefs = Context.getSharedPreferences("PrefsName", 0x0000);
        name = "new name";
        networkClient.requestItem(name, new JsonHandler {
            @Override
            public void requestSuccess(JSONObject resp) {
                views.setOnClickPendingIntent(R.section, pendingIntent);
            }
    } …
Run Code Online (Sandbox Code Playgroud)

java android android-widget android-appwidget

0
推荐指数
1
解决办法
480
查看次数

在Android Studio中开发App Widget

在使用Android Studio开发App Widget时,我收到以下错误:

Error running app: Default activity not found
Run Code Online (Sandbox Code Playgroud)

但是,这是一个App Widget,而不是一个应用程序,甚至更多,它曾经在过去工作.
如何在不修改清单文件的情况下使Android Studio运行App Widget?

android android-appwidget android-studio

0
推荐指数
1
解决办法
621
查看次数