2

正直なところ、ここで何が間違っているのかわかりません。私は昨夜これを機能させました。コードをいじりましたが、元の場所に戻ったと確信していますが、クリックしても何もしません。

これが私のコードです

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

    for (int appWidgetId : appWidgetIds) {


    Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.xx.xx"));
    PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT );


    RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);
    remoteView.setOnClickPendingIntent(R.id.image, pendingIntent);

    }        
    super.onUpdate(context, appWidgetManager, appWidgetIds);

ウィジェットがクリックされたときにユーザーを市場に連れて行こうとしているだけですが、何も起こりません。

これは簡単な修正ですか?

4

2 に答える 2

7

何てことだ。私はこれに約4-5時間を費やしました..ちょうど私が間違ったことをしたことに気づきました。

'appWidgetManager.updateAppWidget(appWidgetId、remoteView);'がありませんでした setOnClickPendingIntentの後。

プログラミングの楽しさ。

于 2012-07-06T03:29:58.397 に答える
0

ホーム画面ウィジェットをクリックして処理するには、次のようにカスタムリバイバーをマニファストに登録する必要があります。

<intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    <action android:name="com.imranandroid.xxx.xxxx.ACTION_WIDGET_CLICK"/>
    <action android:name="android.appwidget.action.APPWIDGET_DELETED"/>

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

このアクションを Widget Layout または Button にアタッチします。

public class SlientwidgetProvider extends AppWidgetProvider {
    public static String ACTION_WIDGET_CLICK= "ActionReceiverClick";
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {  
   RemoteViews rview = new RemoteViews(paramContext.getPackageName(), R.layout.widget_layoutmain);
    Intent active = new Intent(paramContext, SlientwidgetProvider.class);
    active.setAction(Globfilds.ACTION_WIDGET_CLICK);
    ///....

ホーム画面ウィジェットのクリックを処理するための完全なコードは、次のとおりです。

サイレントトグル

于 2012-07-05T07:02:20.790 に答える