AppWidget(二) PendingIntent

      PendingIntent 待定的意图 我们可以同过它来启动其它应用的activity,service,broadcast,

PendingIntent  是系统用于检索原始数据的一个标记,即使一个application停止了,但如果又新建application  , 检索个相同intent的PendingIntent 它将和原来的PndingIntent 拥有相同的标记, 必须通过remove 移除它,否者可能会出现该应用出现上次应用的数据

    PendingIntent 可以通过 getService,getActivity,getBroadcast 来启动相应的组件,

    getService( Context context, int requestCode, Intent intent, int flags)

   requestCode : 当需要发送不同的pendingIntent 的时候 必须设置该值,否者将会出现可能多个button 发送的是同一个intent事件

  flags 有4种形式 FLAG_CANCEL_CURRENT    取消当前的pendingIntent , 当只需要更新intent  时可以调用这个,但必须确保前面的么有需要的实体,否者前面的会失效,

 FLAG_UPDATE_CURRENT    更新所有的pendingIntent 比较实用

FLAG_NO_CREATE    不新建  如果不存在 返回null

FLAG_ONE_SHOT   只新建一次 当触发send时  自动清除pendingIntent

Mp3 中多个button绑定pendingIntent 事件

@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		System.out.println("onUpdate");
			for(int i=0;i<appWidgetIds.length;i++){
				//创建一个Intent对象
				RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.appwidget_music);
				//前一首歌
			Intent intent=new Intent( MUSIC_PLAY_STATE);
			Bundle bundle=new Bundle();
			bundle.putString("action","prev");
			bundle.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetIds[i]);
			intent.putExtras(bundle);
			// 创建一个PendingIntent对象
			PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0,intent,
					PendingIntent.FLAG_UPDATE_CURRENT);

			remoteViews.setOnClickPendingIntent(R.id.prevMusicImage,pendingIntent);
			
			//下一首
			intent=new Intent( MUSIC_PLAY_STATE);
			bundle=intent.getExtras();
			bundle=new Bundle();
			bundle.putString("action","next");
			bundle.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetIds[i]);
			intent.putExtras(bundle);
		 pendingIntent=PendingIntent.getBroadcast(context,1,intent,PendingIntent.FLAG_UPDATE_CURRENT);
			remoteViews.setOnClickPendingIntent(R.id.nextMusicImage,pendingIntent);
			
			
			//播放或暂停
			intent=new Intent( MUSIC_PLAY_STATE);
			bundle=new Bundle();
			bundle.putString("action","playOrPause");
			intent.putExtras(bundle);
			pendingIntent=PendingIntent.getBroadcast(context,2,intent,PendingIntent.FLAG_UPDATE_CURRENT);
			remoteViews.setOnClickPendingIntent(R.id.playOrPauseImage,pendingIntent);
			
			System.out.println("appWidgetIds======"+appWidgetIds[i]);
			appWidgetManager.updateAppWidget(appWidgetIds[i],remoteViews);
			}

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


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值