Вы можете сделать это во флаттере через пользовательские platform-channel . Пожалуйста, будьте осторожны и откровенны с пользователем при работе с учетной записью, профилем и контактными данными.
Для этого требуются следующие разрешения:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
вы можете использовать simple_permissions плагин для запроса / проверки доступа
Откройте файл MainActivity.java, расположенный в папке android java в Project.
добавьте следующий код для получения электронных писем с устройства в методе oncreate
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, Result result) {
if (call.method.equals("getEmailList")) {
final List<String> list = new ArrayList<>();
AccountManager manager = AccountManager.get(getApplicationContext());
Account[] accounts = manager.getAccountsByType("com.google");
List<String> possibleEmails = new ArrayList<String>();
for (Account account : accounts) {
possibleEmails.add(account.name);
System.out.print(account.name);
}
/*Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(getApplicationContext()).getAccounts();
for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
primaryEmail = account.name;
}
}*/
result.success(possibleEmails);
}
}
}
);
и вы можете вызывать метод из кода флаттера через канал метода
static const platform = const MethodChannel('samples.flutter.io/email');
var emailist = await platform.invokeMethod('getEmailList');
полный образец проект