詳解Android Widgets中Click事件
Android Widgets中Click事件是本文要介紹的內(nèi)容,主要來(lái)了解并學(xué)習(xí)Android Widgets應(yīng)用。不得不說,Android下的Widgets事實(shí)上很弱,而提供的交互能力更是相當(dāng)?shù)纳?,在其關(guān)鍵類 RemoteViews內(nèi),也僅能找到一個(gè)OnClick的事件,除此之外完全沒有其他任何事件。
借由這個(gè)事件,讓我們能夠完成一些簡(jiǎn)單的交互,其基本原理只有一條,即對(duì)界面組件作出Click動(dòng)作,然后處理該Click事件
核心步驟如下所示:
1、申請(qǐng)一個(gè)Intent,用于標(biāo)識(shí)Click時(shí)要做的動(dòng)作
2、申請(qǐng)一個(gè)PendingIntent,用于將Intent掛起,并等待事件觸發(fā)
3、綁定Click事件到具體組件
4、更新Widget
于是代碼就很簡(jiǎn)單了:
- public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
- Intent actClick=new Intent("rarnu.demo.click");
- PendingIntent pending= PendingIntent.getBroadcast(context, 0, actClick, 0);
- RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.main);
- rv.setOnClickPendingIntent(R.id.btnClick, pending);
- appWidgetManager.updateAppWidget(appWidgetIds, rv);
- }
此處的Intent actClick=new Intent("rarnu.demo.click");一句,可以按不同的需求修改成不同的形式
下面按不同的場(chǎng)景來(lái)講述
一、發(fā)送消息
要發(fā)送消息,必須在Widget的配置文件內(nèi)增加消息的接收動(dòng)作 / Action,如下所示:
- <action android:name="rarnu.demo.click"></action>
有了這句配置后,Widget就擁有了接受指定消息的能力,再配合代碼處理之
- public void onReceive(Context context, Intent intent){
- super.onReceive(context, intent);
- if(intent.getAction().equals("rarnu.demo.click")) {
- Toast.makeText(context, "OK!!!!!", Toast.LENGTH_LONG).show();
- }
- }
二、啟動(dòng)應(yīng)用程序
Intent聲明需要改為Intent actClick=new Intent(context, <startApp>.class);
三、啟用服務(wù)
Intent的聲明需要改為Intent actClick = new Intent("<ServiceName>.START");
看完這篇文章后,可能有些人會(huì)問,為什么沒有從Widget界面上獲取數(shù)據(jù)的代碼演示?
我在此說一下,是的,就是沒有從Widget界面上獲取數(shù)據(jù),因?yàn)锳ndroid不支持。
小結(jié):詳解Android Widgets中Click事件的內(nèi)容介紹完了,希望通過Android Widgets內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!