如何通过本机电话簿检索联系人?

时间:2020-04-01 11:48:56

标签: android ios flutter dart

我想知道是否有一个软件包可以让我从手机的本机目录中检索联系人(我想使用联系人导入功能在我的应用程序中创建客户端)。我已经测试了很多软件包,但是例如 contact_picker easy_contact_picker 这样的软件包在iOS上可以完美运行,但是在Android上崩溃...您知道我如何能做到吗?

我在Android上发生的崩溃的示例:

D/EGL_emulation(18178): eglMakeCurrent: 0xe1bde460: ver 3 0 (tinfo 0xe1b955c0)
D/FlutterView(18178): Detaching from a FlutterEngine: io.flutter.embedding.engine.FlutterEngine@11b78c1
D/AndroidRuntime(18178): Shutting down VM
E/AndroidRuntime(18178): FATAL EXCEPTION: main
E/AndroidRuntime(18178): Process: fr.myproject.myproject, PID: 18178
E/AndroidRuntime(18178): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2015, result=-1, data=Intent { dat=content://com.android.contacts/contacts/lookup/3776i4b14e6d913284bbe/1 flg=0x1 }} to activity {fr.myproject.myproject/com.example.myproject_mobile.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.app.Activity.getContentResolver()' on a null object reference
E/AndroidRuntime(18178):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4360)
E/AndroidRuntime(18178):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4402)
E/AndroidRuntime(18178):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
E/AndroidRuntime(18178):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
E/AndroidRuntime(18178):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
E/AndroidRuntime(18178):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
E/AndroidRuntime(18178):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(18178):    at android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime(18178):    at android.app.ActivityThread.main(ActivityThread.java:6669)
E/AndroidRuntime(18178):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(18178):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/AndroidRuntime(18178):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
E/AndroidRuntime(18178): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.app.Activity.getContentResolver()' on a null object reference
E/AndroidRuntime(18178):    at com.appleeducate.flutter.contactpicker.ContactPickerPlugin.onActivityResult(ContactPickerPlugin.java:76)
E/AndroidRuntime(18178):    at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:634)
E/AndroidRuntime(18178):    at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:367)
E/AndroidRuntime(18178):    at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:546)
E/AndroidRuntime(18178):    at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:594)
E/AndroidRuntime(18178):    at android.app.Activity.dispatchActivityResult(Activity.java:7454)
E/AndroidRuntime(18178):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4353)
E/AndroidRuntime(18178):    ... 11 more
I/Process (18178): Sending signal. PID: 18178 SIG: 9
Lost connection to device.
Exited (sigterm)

1 个答案:

答案 0 :(得分:0)

最后,我使用了contack_picker插件,但使用了fork git(请参见https://github.com/danysz/contact_picker)。还必须进入颤动的Beta频道,因为在稳定状态下它不起作用(一定程度上是此级别的回归)。