flutter - 在 flutter 中获取联系人

标签 flutter dart

我正在尝试使用“contacts_service”插件从设备设备获取联系人。它在我的设备上运行良好,但无法在任何其他设备上运行。

    await PermissionHandler().requestPermissions([
      PermissionGroup.contacts,
    ]);
    try {
      var x = await ContactsService.getContacts();
      print(x);
    } catch (e) {
      print(e);
    }

这是我收到的错误信息

FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(17213): Process: com.chat.amrirez_chat, PID: 17213
E/AndroidRuntime(17213): java.lang.RuntimeException: An error occurred while executing doInBackground()
E/AndroidRuntime(17213):    at android.os.AsyncTask$3.done(AsyncTask.java:318)
E/AndroidRuntime(17213):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
E/AndroidRuntime(17213):    at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
E/AndroidRuntime(17213):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(17213):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
E/AndroidRuntime(17213):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
E/AndroidRuntime(17213):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
E/AndroidRuntime(17213):    at java.lang.Thread.run(Thread.java:761)
E/AndroidRuntime(17213): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
E/AndroidRuntime(17213):    at flutter.plugins.contactsservice.contactsservice.Contact.compareTo(Contact.java:94)
E/AndroidRuntime(17213):    at flutter.plugins.contactsservice.contactsservice.ContactsServicePlugin$GetContactsTask$1.compare(ContactsServicePlugin.java:175)
E/AndroidRuntime(17213):    at flutter.plugins.contactsservice.contactsservice.ContactsServicePlugin$GetContactsTask$1.compare(ContactsServicePlugin.java:172)
E/AndroidRuntime(17213):    at java.util.TimSort.binarySort(TimSort.java:292)
E/AndroidRuntime(17213):    at java.util.TimSort.sort(TimSort.java:235)
E/AndroidRuntime(17213):    at java.util.Arrays.sort(Arrays.java:1523)
E/AndroidRuntime(17213):    at java.util.Collections.sort(Collections.java:238)
E/AndroidRuntime(17213):    at flutter.plugins.contactsservice.contactsservice.ContactsServicePlugin$GetContactsTask.doInBackground(ContactsServicePlugin.java:178)
E/AndroidRuntime(17213):    at flutter.plugins.contactsservice.contactsservice.ContactsServicePlugin$GetContactsTask.doInBackground(ContactsServicePlugin.java:137)
E/AndroidRuntime(17213):    at android.os.AsyncTask$2.call(AsyncTask.java:304)
E/AndroidRuntime(17213):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(17213):    ... 4 more

最佳答案

给ManifestFiles添加权限(flutter Project中有两个Manifest.xml)

主/AndroidManifest.xml

<uses-permission android:name="android.permission.READ_CONTACTS" />  
<uses-permission android:name="android.permission.WRITE_CONTACTS" />  

使用包: 联系人服务0.3.3

https://pub.dev/packages/contacts_service

关于flutter - 在 flutter 中获取联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57921348/

相关文章:

json - 如何将JSON字符串转换为数字?

java - 如何在 Flutter 应用程序和它的 android/ios 代码之间建立一个发布-订阅 channel ?

flutter - 我们可以为三星电视构建 Flutter 应用程序吗?

flutter - 没有带有AnimatedSwitcher或AnimatedOpacity的动画

android - 关于 flutter 你需要知道的事情

flutter - 如何使用Flutter同Page导航与Getx路由或Material路由?

dart - 如何在同一设备上为不同项目使用两个版本的 Flutter?

dart - pubspec.lock和pubspec.yaml之间的区别

flutter - Flutter:如何在容器内对齐小部件