Как вытащить основной идентификатор телефона из флаттера для автоматического заполнения регистрационной формы? - PullRequest
0 голосов
/ 14 ноября 2018

Без входа пользователя в Google , как показано ниже по ссылке

Как получить доступ в систему электронная почта идентификатор из учетных записей Google телефона с помощью флаттера.

Здесь показано, как получить доступ к первичному почтовому идентификатору с Android.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вы можете сделать это во флаттере через пользовательские 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');

полный образец проект

0 голосов
/ 14 ноября 2018

Вы должны сначала позволить ему войти в систему со своей учетной записью.

1 - сделайте так, чтобы ваш пользователь входил в систему, используя пакет входа в Google https://pub.dartlang.org/packages/google_sign_in

2 - вы можете подписать возвращенного пользователя на свой бэкэнд или бэкэнд Firebase просто с этим (не объясню весь процесс здесь)

3 - вы можете получить доступ ко всем API Google (некоторые области доступа могут потребоваться, области должны быть предоставлены на шаге 1) вот флаттер Google API для доступа ко всем методам Google https://pub.dartlang.org/packages/googleapis

...