日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android+桌面组件开发,android——桌面组件的开发

發布時間:2023/12/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android+桌面组件开发,android——桌面组件的开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

android除了普通的app應用外,還提供了桌面組件,那么怎么開發一個桌面組件呢?來看一下吧。

我們做這樣一個功能,通過桌面組件獲取imel,然后調用webserver,通過imel獲得用戶的相應信息,比如姓名,并顯示在桌面。

一、新建工程

新建的工程為普通android工程

圖標和activity不要選,因為我們不需要他們

其它的沒什么要注意的了。

二、xml配置

桌面組件需要的xml如下所示:

main.xml和AndroidManifest.xml就不多說了,一個是布局,一個是主要的配置。這兩個在普通app應用中也是有的。這里說一下widget_provider.xml

說明一下,這里的minWidth和minHeight指定桌面應用的大小。initialLayout指定布局xml。

三、實現代碼

桌面組件的實現只需要繼承AppWidgetProvider類即可。

可以覆寫的方法有

publicvoidonReceive(Context?context,?Intent?intent) 用來接收廣播消息

publicvoidonUpdate(Context?context,?AppWidgetManager?appWidgetManager,int[]?appWidgetIds) 每次更新都會調用,從桌面拖出桌面組件也會調用

publicvoidonDeleted(Context?context,int[]?appWidgetIds)刪除的時候調用

publicvoidonEnabled(Context?context) 從桌面拖出時會調用,多次拖出只調用一次

publicvoidonDisabled(Context?context) 最后一個組件刪除時調用該方法

我們這里只是覆寫onUpdate

有一點要注意:和普通app應用的service一樣,http請求發送不能寫在主線程里,需要啟動一個新的線程進行處理。

下面來看一下實現的例子

package com.wlf.selfAware;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.Properties;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.wlf.selfAware.cache.CacheLoader;

import com.wlf.selfAware.cache.NameCacheFactory;

import com.wlf.selfAware.cache.NameCacheLoader;

import android.appwidget.AppWidgetManager;

import android.appwidget.AppWidgetProvider;

import android.content.ComponentName;

import android.content.Context;

import android.telephony.TelephonyManager;

import android.widget.RemoteViews;

public class Widget extends AppWidgetProvider {

RemoteViews remoteViews;

AppWidgetManager appWidgetManager;

ComponentName thisWidget;

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager,

int[] appWidgetIds) {

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

String imel=tm.getDeviceId();

System.out.println("--------------------imel:"+imel+"-----------------------");

Aware aware=new Aware(context,appWidgetManager);

Thread thread=new Thread(aware);

thread.start();

super.onUpdate(context, appWidgetManager, appWidgetIds);

}

private class Aware implements Runnable{

Context context;

RemoteViews remoteViews;

AppWidgetManager appWidgetManager;

ComponentName thisWidget;

String name;

public Aware(Context context,AppWidgetManager appWidgetManager){

this.context=context;

this.appWidgetManager = appWidgetManager;

remoteViews = new RemoteViews(context.getPackageName(),R.layout.main);

thisWidget = new ComponentName(context,Widget.class);

}

public void run() {

String name="";

CacheLoadernameCacheLoader=new NameCacheLoader(new NameCacheFactory());

HttpClient httpclient = new DefaultHttpClient();

String uri="http://www.網址不告訴你:80/Service/rest/vip/pad/name/"+imel;

HttpGet request = new HttpGet(uri);

request.addHeader("Accept", "text/xml");

try{

HttpResponse response = httpclient.execute(request);

String rs=parseResponse(response);

System.out.println("--------------返回值:"+rs+"------------------");

JSONObject json=(JSONObject) JSON.parse(rs);

name=(String) json.get("obj");

System.out.println("--------------返回值:"+json.get("obj")+"------------------");

//將姓名存起來

System.out.println("--------------將獲得的名字緩存起來------------------");

nameCacheLoader.writeResource(this.context, "name", name);

System.out.println("--------------name:"+name+"------------------");

}catch(Exception e){

e.printStackTrace();

System.out.println(e.getStackTrace());

}

if(name!=null && !name.equals("")){

remoteViews.setTextViewText(R.id.myName, name);

}

else{

String oldName="";

try {

System.out.println("--------------取得上次成功獲取的名字------------------");

oldName = nameCacheLoader.readResource(context, "name");

System.out.println("--------------oldName:"+oldName+"------------------");

} catch (Exception e) {

e.printStackTrace();

}

if(oldName!=null && !oldName.equals(""))

remoteViews.setTextViewText(R.id.myName, oldName);

else

remoteViews.setTextViewText(R.id.myName, "無用戶或未聯網");

}

appWidgetManager.updateAppWidget(thisWidget, remoteViews);

}

}

public String parseResponse(HttpResponse response) throws Exception {

HttpEntity entity = response.getEntity();

InputStream instream = entity.getContent();

StringBuilder sb = new StringBuilder();

BufferedReader r = new BufferedReader(new InputStreamReader(instream));

for (String line = r.readLine(); line != null; line = r.readLine()) {

sb.append(line);

}

String jsonString = sb.toString();

instream.close();

return jsonString;

}

}

總結

以上是生活随笔為你收集整理的android+桌面组件开发,android——桌面组件的开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。