This example describes the Android Desktop Component App widget usage. Share to everyone for your reference. Specifically as follows:
Here to simulate a case: add Appwidget to the desktop, after clicking Appwidget appwidget text will change
Main.xml Layout file:
<?xml version= "1.0" encoding= "Utf-8"?> <linearlayout xmlns:android=
"http://schemas.android.com/apk/" Res/android "
android:orientation=" vertical "android:layout_width=" fill_parent "
android:layout_height=" Fill_parent ">
<textview android:id=" @+id/tv
android:layout_width= "Fill_parent"
android: layout_height= "Wrap_content"
android:text= "program entry"
android:textsize= "50dip"/>
</linearlayout >
Res/xml/my_appwidget.xml Layout file:
<?xml version= "1.0" encoding= "Utf-8"?> <appwidget-provider xmlns:android=
"http://" Schemas.android.com/apk/res/android "
android:minwidth=" 120DP "
android:minheight=" 60DP "
android: updateperiodmillis= "1000"
android:initiallayout= "@layout/main" >
</appwidget-provider>
Manifest file:
<?xml version= "1.0" encoding= "Utf-8"?> <manifest xmlns:android=
"http://schemas.android.com/apk/res/" Android "
package=" com.ljq.activity "android:versioncode=" 1 "
android:versionname=" 1.0 ">
< Application android:icon= "@drawable/icon"
android:label= "@string/app_name" >
<receiver android:name =". Testactivity ">
<meta-data android:name=" Android.appwidget.provider "
android:resource=" @xml/my_ Appwidget ">
</meta-data>
<intent-filter>
<action android:name=" COM. Ljq. ACTION. Widgets. Click "></action>
<action android:name=" Android.appwidget.action.APPWIDGET_UPDATE "/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minsdkversion = "7"/>
</manifest>
Variable class Utiltool: Used to control text changes:
Package com.ljq.activity;
public class Utiltool {public
static Boolean ischange=true;
}
Testactivity class, inherited from Appwidgetprovider:
Package com.ljq.activity;
Import android.app.PendingIntent;
Import Android.appwidget.AppWidgetManager;
Import Android.appwidget.AppWidgetProvider;
Import Android.content.ComponentName;
Import Android.content.Context;
Import android.content.Intent;
Import Android.widget.RemoteViews; public class Testactivity extends Appwidgetprovider {//Custom one ACTION name private static final String Action_click_name = "C Om. Ljq. ACTION. Widgets.
Click ";
Private Remoteviews RV; @Override public void OnUpdate (context context, Appwidgetmanager Appwidgetmanager, int[] appwidgetids) {System.out.pri
Ntln ("OnUpdate"); Gets the R.layout.main layout, operates on the controls in the layout R.layout.main through class remoteviews/*RV = new Remoteviews (Context.getpackagename (),
R.layout.main);
Intent Intentclick = new Intent (action_click_name);
Pendingintent pendingintent = pendingintent.getbroadcast (context, 0, Intentclick, 0);
Rv.setonclickpendingintent (r.id.tv, pendingintent);
ComponentName cmp = new ComponentName (context, testactivity.class); AppWidgetmanager Myappwidgetmanager = appwidgetmanager.getinstance (context);
Myappwidgetmanager.updateappwidget (CMP, RV); */FINAL int N = appwidgetids.length;
for (int i = 0; i < N; i++) {int appwidgetid = appwidgetids[i];
Updateappwidget (context, Appwidgetmanager, Appwidgetid);
}//appwidget life cycle: Each time it is received, the broadcast executes once for the end of a lifecycle. In other words, we declare the global variable in the rewrite Appwidgetprovider class to do the State judgment.
Each time the state changes appwidgetprovider to receive a second broadcast, it is reinitialized for you, that is, a appwidgetprovider was instantiated again.
Today, I put a Boolean value in it. Initialize to true, observe debugging see that every entry is true so you are setting up desktop components,//global variables to declare it in another entity class to judge is no problem, avoid in this class.
@Override public void OnReceive (context context, Intent Intent) {System.out.println ("onreceive");
if (rv = = null) {RV = new Remoteviews (Context.getpackagename (), r.layout.main); } if (Intent.getaction (). Equals (Action_click_name)) {if (Utiltool.ischange) {Rv.settextviewtext (r.id.tv, "abc")
;
else {rv.settextviewtext (r.id.tv, "123"); } Utiltool.ischange =!
Utiltool.ischange; Appwidgetmanager AppwidgetmAnger = appwidgetmanager.getinstance (context);
int[] Appids = appwidgetmanger.getappwidgetids (new componentname (context, testactivity.class));
Appwidgetmanger.updateappwidget (Appids, RV);
}else{super.onreceive (context, intent); } private void Updateappwidget (context context, Appwidgetmanager Appwidgemanger, int appwidgetid) {RV = new Remot
EViews (Context.getpackagename (), r.layout.main);
Intent Intentclick = new Intent ();
Intentclick.setaction (Action_click_name);
Pendingintent pendingintent = pendingintent.getbroadcast (context, 0, Intentclick, 0);
Rv.setonclickpendingintent (r.id.tv, pendingintent);
Appwidgemanger.updateappwidget (Appwidgetid, RV);
}
}
I hope this article will help you with your Android program.