Android PendingIntent 启动Activity

Posted

技术标签:

【中文标题】Android PendingIntent 启动Activity【英文标题】:Android PendingIntent to start Activity 【发布时间】:2013-06-15 05:22:23 【问题描述】:

我已设法设置我的小部件,以便在单击它时启动配置活动,以便用户可以更改以前设置的数据。 但是,当第一次将小部件添加到主屏幕时,单击它什么也不做,如果我通过 eclipse 再次推送 apk 而不编辑任何代码,那么小部件就会变为可点击,我尝试将相同的 PendingIntent 放在 onEnable 方法中,但它仍然没有不行吗?

这是我的更新方法

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                    int[] appWidgetIds) 
    for (int appWidgetId : appWidgetIds) 
            setAlarm(context, appWidgetId, UPDATE_RATE);
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);

            //views.setViewVisibility(R.id.button1, View.VISIBLE);

            Intent intent = new Intent(context, Config.class);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
            PendingIntent pendIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            views.setOnClickPendingIntent(R.id.imageView2, pendIntent);

            appWidgetManager.updateAppWidget(appWidgetId, views);


        super.onUpdate(context, appWidgetManager, appWidgetIds);
    

如果我正确,则不再需要 onRecieve 方法,因为我没有发送请求活动的广播即时消息?

提前感谢

【问题讨论】:

【参考方案1】:

对于任何想知道的人,我必须在添加小部件后将以下代码添加到我的服务 onStart 方法中,onClick 立即可用!

 RemoteViews views = new RemoteViews(getApplicationContext().getPackageName(), R.layout.main);
            Intent intent1 = new Intent(getApplicationContext(), Config.class);
            intent1.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
            intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            intent1.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
            PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), appWidgetId, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
            views.setOnClickPendingIntent(R.id.imageView2, pendIntent);

【讨论】:

以上是关于Android PendingIntent 启动Activity的主要内容,如果未能解决你的问题,请参考以下文章

Android 地理围栏是不是保持活动状态直到删除/过期或仅在我的 PendingIntent 启动之前

Android中的前台通知启动新的活动(通过pendingIntent)而不是现有的

未触发 Android 通知操作 (PendingIntent)

Android PendingIntent小结

Android安全笔记-Intent和PendingIntent基本概念

android点滴之PendingIntent的使用