思路:
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()")首先使用手机登录企业微信,你可以用微信号登录也能使用手机登录2/3
输入你的邮箱帐号来绑定企业,这个邮箱必须是你在企业绑定的邮箱,然后就可以进入你的公司页面了。
3/3
入到企业界面后,点击右上角的同步通讯录,然后就可以同步微信通讯录到你的企业微信了。
通过排除法来尝试:1、缓存的原因:更换成“通讯录2.html”后,清空浏览器缓存,再刷新下看看能否显示;
2、页面的原因:新建一个“通讯录3.html”,把“通讯录1.html”中的源码完整复制到“通讯录3.html”中,仅改动过其中非js、css、jquery和代码框架外的一点点内容,然后再常识刷新看看。
3、如果2改动后能正常打开,你就要考虑下是不是你“通讯录2.html ”中有js或jquery影响了网页打开;
4、浏览器或电脑的原因,有时候浏览器或电脑会犯一些小毛病,你换台电脑常识运行下你的程序。
5、你确定你修改的文件是你运行的文件?我以前翻过这种问题,我备份了一份源码,结果我一直改动的备份的源码,执行的原文件的源码结果老不显示,后来才发现是我自己犯糊涂了。