android 怎么通过js调用手机通讯录

 我来答
woshidaniel
推荐于2016-04-27 · TA获得超过9240个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:948万
展开全部

思路:

1、js调用android的java代码

2、通过java代码访问通讯录

3、通过java代码访问js代码返回通讯录信息

代码:

1、js调用android的java代码

   js代码:

window.ncp.callOnJs2("click");

 android代码,通过webview打开页面:

mWebview.getSettings().setJavaScriptEnabled(true); 
mWebView.addJavascriptInterface(new JavaScriptInterface(), "ncp");  
final class JavaScriptInterface {     
       public int callOnJs() {                            
          return 1000;  
       }     
       public void callOnJs2(String mode) {  
         //TODO  
       }       
  }

2、通过java代码访问通讯录

/**得到手机通讯录联系人信息**/  
   private void getPhoneContacts() {  
ContentResolver resolver = mContext.getContentResolver();  
 
// 获取手机联系人  
Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null);  
 
 
if (phoneCursor != null) {  
    while (phoneCursor.moveToNext()) {  
 
    //得到手机号码  
    String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);  
    //当手机号码为空的或者为空字段 跳过当前循环  
    if (TextUtils.isEmpty(phoneNumber))  
        continue;  
      
    //得到联系人名称  
    String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);  
      
    //得到联系人ID  
    Long contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);  
 
    //得到联系人头像ID  
    Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);  
      
    //得到联系人头像Bitamp  
    Bitmap contactPhoto = null;  
 
    //photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的  
    if(photoid > 0 ) {  
        Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);  
        InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(resolver, uri);  
        contactPhoto = BitmapFactory.decodeStream(input);  
    }else {  
        contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.contact_photo);  
    }  
      
    mContactsName.add(contactName);  
    mContactsNumber.add(phoneNumber);  
    mContactsPhonto.add(contactPhoto);  
    }  
 
    phoneCursor.close();  
}

3、通过java代码访问js代码返回通讯录信息

mWebView.loadUrl("javascript:onSaveCallback()");
zhihaoshi
2013-11-26
知道答主
回答量:11
采纳率:0%
帮助的人:11.4万
展开全部
可以,完全可以,必须可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式