我想从我的widget类中打开一个活动类

时间:2014-05-07 07:07:03

标签: android android-widget

Intent i = new Intent(context, MainActivity.class);
i.setAction(YOUR_AWESOME_ACTION);

PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
rootView.setOnClickPendingIntent(R.id.imgDistiFlag, pi);
appWidgetManager.updateAppWidget(widgetId, rootView);

及以下是onReceive函数的代码

if (intent.getAction().equals(YOUR_AWESOME_ACTION)) {

    Intent intn = new Intent (context, MainActivity.class);
    intn.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity (intn);

}

1 个答案:

答案 0 :(得分:0)

你不需要那个。对于"只是"从你的widget类打开一个Activity就足够了:

Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
remoteViews.setOnClickPendingIntent(R.id.imgDistiFlag, pendingIntent);

编辑错误的清单声明:

您的窗口小部件不是活动,因此您无法将其设置为清单中的活动。你必须使用接收器。

    <receiver
        android:name="com.wapp.MyWidgetProvider"
        android:icon="@drawable/ic_launcher"
        android:label="lbl" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>

        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/widget_xml" />
    </receiver>

您的 widget_xml 文件(dp值适用于4x1小部件):

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="1000"
    android:initialLayout="@layout/your_widget_layout_xml">
</appwidget-provider>