android获取联系人信息

android中在webView中显示网页,在网页中通过Js调用通讯录中的联系人信息,显示到webView中。





部分开发代码如下:

首先的Html的代码如下:

  

    
编号 name phone

获取联系人信息的一个MyJavaScript类:

package com.stcyclub.testhtmlgetlinkman;import java.util.ArrayList;
import java.util.List;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import com.stcyclub.testhtmlgetlinkman.po.LinkMan;import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Handler;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.PhoneLookup;
import android.sax.StartElementListener;
import android.text.TextUtils;
import android.util.Log;
import android.webkit.WebView;public class MyJavaScript {  /**获取库Phon表字段**/  private static final String[] PHONES_PROJECTION = new String[] {  Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID,Phone.CONTACT_ID };  /**联系人显示名称**/  private static final int PHONES_DISPLAY_NAME_INDEX = 0;  /**电话号码**/  private static final int PHONES_NUMBER_INDEX = 1;  /**头像ID**/  private static final int PHONES_PHOTO_ID_INDEX = 2;  /**联系人的ID**/  private static final int PHONES_CONTACT_ID_INDEX = 3;  /**联系人名称**/  private ArrayList mContactsName = new ArrayList();  /**联系人头像**/  private ArrayList mContactsNumber = new ArrayList();  /**联系人头像**/  private ArrayList mContactsPhonto = new ArrayList(); /**保存联系人**/private ArrayList linkMans = new ArrayList();  private final int DIALOG          = 0;private final int REQUEST_CONTACT = 1;private WebView webview;  //使用一个handler来处理加载事件  private Handler handler;  private Context mContext;public MyJavaScript(Context context,Handler handler){  this.handler = handler;  webview = (WebView) ((Activity)context).findViewById(R.id.myweb); mContext  =  context;}  /* * java调用显示网页,异步 */  public void show(){  handler.post(new Runnable() {           public void run() {  // 重要:url的生成,传递数据给网页  String url = "javascript:contactlist('" + generateData() + "')";  webview.loadUrl(url);  }  });  }  /* * 由java程序生成数据传到网页中显示 */  private String generateData(){  try {  //构造一个json对象  JSONObject obj1 = new JSONObject();  obj1.put("id", 123);  obj1.put("name", "tom");  obj1.put("phone", "66666666");  JSONObject obj2 = new JSONObject();  obj2.put("id", 13);  obj2.put("name", "jerry");  obj2.put("phone", "88888888");  //将构造好的2个json对象加入到json数组中  JSONArray arr = new JSONArray();  arr.put(obj1);  arr.put(obj2);  return arr.toString();  } catch (JSONException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  return "";  }  /* * 拨打电话方法 */  public void call(final String phone){  Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + phone));  mContext.startActivity(intent);  } /*** 获取所有的联系人*/public void getPhoneLinkMan(){//清空linkManslinkMans.clear();//得到ContentResolver对象//super.onCreate(savedInstanceState);ContentResolver cr = mContext.getContentResolver();//取得电话本中开始一项的光标Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);//向下移动光标while(cursor.moveToNext()){//取得联系人名字int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String contact = cursor.getString(nameFieldColumnIndex);//取得电话号码String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);while(phone.moveToNext()){String Number = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // string += (contact + ":" + Number + "");LinkMan man=new LinkMan(contact, Number);Log.d("TAG",contact + ":" + Number + "");linkMans.add(man);}}cursor.close();Log.d("TAG", "linkMans.size()"+linkMans.size());handler.post(new Runnable() {           public void run() {  // 重要:url的生成,传递数据给网页  String url = "javascript:contactlist('" + ObjectToJson() + "')";  webview.loadUrl(url);  }  });  }}/*** 将对象转换成为json数据*/public String ObjectToJson(){try {    //将构造好json数组JSONArray arr = new JSONArray(); for(int i =0; i




MainActivity中的部分代码如下:

public class MainActivity extends Activity {private String contactId, contactName;private WebView webView;  private Handler handler = new Handler(); //自定义的弹出框类  SelectPicPopupWindow menuWindow; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);init();}@SuppressLint("JavascriptInterface")private void init() {webView = (WebView)findViewById(R.id.myweb);  //重要:让webview支持javascript  webView.getSettings().setJavaScriptEnabled(true);  //重要:添加可以供html中可供javascript调用的接口类  webView.addJavascriptInterface(new MyJavaScript(this, handler), "myjavascript");  //加载index.html  webView.loadUrl("file:///android_asset/index.html");}public void btnClick(View v){//实例化SelectPicPopupWindow  menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);  //显示窗口  menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置  }//为弹出窗口实现监听类  private OnClickListener  itemsOnClick = new OnClickListener(){  public void onClick(View v) {  menuWindow.dismiss();  switch (v.getId()) {  default:  break;  }  }  };  @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);Log.d("TAG", "requestCode"+requestCode+"\t resultCode"+resultCode+"\t"+data);Uri result = data.getData();contactId = result.getLastPathSegment();contactName = getPhoneContacts(contactId);Toast.makeText(this, "contactName"+contactName, Toast.LENGTH_LONG).show();}


代码大概就是这样!本人页是初学者,不是很完善。要源码的联系我!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部