我用另一种简单的方法解决了我的问题。也许对其他人有帮助。
package com.y34h1a.test;
import android.database.Cursor;
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;
import android.provider.ContactsContract;
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.io/contact";
String phoneNumbers = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
if (call.method.equals("getContacts")) {
phoneNumbers = getPhoneNumbers();
if (phoneNumbers != null) {
result.success(phoneNumbers);
} else {
result.error("UNAVAILABLE", "Contacts not found", null);
}
} else {
result.notImplemented();
}
}
});
}
String getPhoneNumbers(){
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (phoneNumber != null)
phoneNumbers = phoneNumbers + phoneNumber + ",";
}
return phoneNumbers;
}
}
颤振代码:
static const platform = const MethodChannel('samples.flutter.io/contact');
final String result = await platform.invokeMethod('getContacts');
List<String> phoneNumbers = result.split(",");