Android_磊子
Android_磊子
  • 发布:2015-05-26 15:54
  • 更新:2020-02-22 01:17
  • 阅读:21033

Android调用系统通讯录控件,native.js实现监听startActivityForResult后返回结果

分类:Native.js

示例代码中选用获取联系人电话号码为例,同学们举一反三,扩展其他,代码如下:

var REQUESTCODE = 1000;  
main = plus.android.runtimeMainActivity();  
var Intent = plus.android.importClass('android.content.Intent');  
var ContactsContract = plus.android.importClass('android.provider.ContactsContract');  
var intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);  
main.onActivityResult = function(requestCode, resultCode, data) {   
  if (REQUESTCODE == requestCode) {  
    var phoneNumber = null;  
    var resultString = "";  
    var context = main;  
    plus.android.importClass(data);  
    var contactData = data.getData();  
    var resolver = context.getContentResolver();  
    plus.android.importClass(resolver);  
    var cursor = resolver.query(contactData, null, null, null, null);  
    plus.android.importClass(cursor);  
    cursor.moveToFirst();  
    var s_ret;  
    var givenName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));  
    s_ret = givenName;  
    var contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));  
    var pCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,  
     null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,  
     null, null);  
    while (pCursor.moveToNext()) {  
     phoneNumber =   pCursor.getString( pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
     s_ret += '\n' + phoneNumber;  
    }  
    alert(s_ret);  
    cursor.close();  
    pCursor.close();  
  }  
};  
main.startActivityForResult(intent, REQUESTCODE);
2015-05-26 15:54 1 条评论 负责人:无 分享
已邀请:
木乃森

木乃森

很好,可以用,第一次调用有点慢,可以加loading效果。等待调用回来关闭loading,但是。。。。IOS咋弄呢

  • 9***@qq.com

    iOS的在这里:https://www.jianshu.com/p/b78b02d64472

    2018-11-21 14:18

5***@sina.com

5***@sina.com

这个代码假如用户没有批准权限的话,后面就用不起

wanZ

wanZ

学习了!

蔡繁荣

蔡繁荣 - 发表是最好的记忆

good job

chender

chender - 与人为善

学习了,原来通过nativejs可以重新java类里面的方法,当初就选取联系人这个问题还专门问过官方人员,但都没有解决

开心就好

开心就好

同问,ISO怎么搞?

露珠

露珠

请问iOS系统怎么写?

  • 9***@qq.com

    iOS的在这里:https://www.jianshu.com/p/b78b02d64472

    2018-11-21 14:19

  • 1***@qq.com

    回复 9***@qq.com: 我试了试你说的这个链接,有点bug,安卓的需要定义一下main这个变量,ios直接闪退,

    2019-07-23 10:11

  • 9***@qq.com

    回复 1***@qq.com: 之前uni-app上是存在问题,现在uni-app iOS闪退的问题已经解决了!安卓的在5++App上是没有问题的,uni-app我还没有试。谢谢你的反馈

    2019-11-04 15:19

地图

地图

顶楼主!同问iOS怎么搞?官方可以统一写个接口啊

  • DCloud_App_Array

    iOS可以通过url scheme相互调用进行APP间的通信,参考:http://ask.dcloud.net.cn/article/64

    2016-01-04 14:24

  • 9***@qq.com

    iOS的在这里:https://www.jianshu.com/p/b78b02d64472

    2018-11-21 14:19

Element

Element - 全栈工程师

膜拜大神

a***@163.com

a***@163.com

支持其他方法吗,keyup,keydown,ontouch

1***@qq.com

1***@qq.com

选择联系人后 怎么什么都没弹出来啊

cydida

cydida

请问iOS系统怎么写?

  • 9***@qq.com

    iOS的在这里:https://www.jianshu.com/p/b78b02d64472

    2018-11-21 14:19

7***@qq.com

7***@qq.com - 前端开发人员

ios找不到调原生的,只能获取到通讯录信息,自己再写个通讯录样式。

  • cydida

    这就尴尬了

    2017-09-11 09:54

  • 7***@qq.com

    样式嘛,自己弄简单点就好了,就名字和电话。要的就弄出来,不要的就不显示了。还是很快的

    2017-09-11 09:57

  • 9***@qq.com

    iOS的在这里:https://www.jianshu.com/p/b78b02d64472

    2018-11-21 14:19

6***@qq.com

6***@qq.com

能否一次,便利所有号码呀。

h***@163.com

h***@163.com

尼玛,IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?IOS呢?

  • 9***@qq.com

    iOS的在这里:https://www.jianshu.com/p/b78b02d64472

    2018-11-21 14:19

9***@qq.com

9***@qq.com

通过Native.js 访问 iOS 原生通讯录界面,参考这里:
https://www.jianshu.com/p/b78b02d64472

2***@qq.com
4***@qq.com

4***@qq.com

为什么页面刚打开,onActivityResult就执行了,真正返回的时候,不执行,导致数据不能正常返回?求大神解答

该问题目前已经被锁定, 无法添加新回复