【问题标题】:Widget is not working小部件不工作
【发布时间】:2013-04-26 10:30:04
【问题描述】:

我从一个小部件类触发了一个活动,但活动直接打开而不使用小部件,但我想在我使用小部件时打开活动,但小部件没有显示在那里请帮助我,我从过去两天开始这样做,但没有进展

public class HomeScreen extends AppWidgetProvider {

@
Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++) {

        int appWidgetId = appWidgetIds[i];

        Intent intent = new Intent(context, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        views.setOnClickPendingIntent(R.id.btn_image, pendingIntent);
        appWidgetManager.updateAppWidget(appWidgetId, views);

    }

}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.app.om" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
    <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
        <activity android:name="com.app.om.MainActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".HomeScreen">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info" />
        </receiver>
    </application>
</manifest>

【问题讨论】:

  • 小部件没有显示在哪里?请更新您的问题,说明您在设备上做了什么以及发生了什么。
  • @Dan Humble 小部件未在没有小部件的设备上显示,活动已启动。

标签: android android-widget


【解决方案1】:

你想要什么

你想点击你的小部件显示活动

发生了什么

活动单独开始

解决方案

像这样在你的小部件提供者中写一个属性

android:configure=""

并在此处提供要启动的类包

并从清单中的 MAinActivty 类中删除 ACTION-MAIN 和 CATEGORY-LAUNCHER

结果

现在只剩下小部件,点击即可进入您的活动

希望对你有帮助

【讨论】:

  • 在 android:configure="" 我必须写 "com.app.om.MainActivity" 或 "com.app.om.HomeScreen"
【解决方案2】:

安装提供小部件的软件包不会自动将小部件添加到主屏幕。用户必须将小部件从应用程序菜单中的小部件列表拖到主屏幕的正确位置。

正如@cafebabe1991 所说,如果您不希望主活动出现在应用程序菜单中,请将其intent-filter 从清单中删除。

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2020-06-23
    • 2014-07-04
    相关资源
    最近更新 更多