Я использую Google API для Android. Поскольку Google API / G Suite Quickstart для Android ссылается на их примеры java, я пытаюсь реализовать это:
GoogleAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow.Builder(
ReadMail.HTTP_TRANSPORT, ReadMail.JSON_FACTORY, clientSecrets, ReadMail.SCOPES)
.setDataStoreFactory(ReadMail.DATA_STORE_FACTORY)
.setAccessType("offline")
.build();
AuthorizationCodeInstalledApp authCodeInstalledApp = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver());
Credential credential = authCodeInstalledApp.authorize("user");
Проблема, с которой я столкнулся сейчас, заключается в том, что Android просто поддерживает подмножество классов JDK. Поэтому java.awt.Desktop не поддерживается.
Но мне действительно нужен этот класс, так как AuthorizationCodeInstalledAppauthorize() рано или поздно вызовет свою внутреннюю функцию browse(). Этой функции нужен класс Desktop.
Есть ли способ получить этот класс для Android? Или есть другой обходной путь для аутентификации в Google?




Решил теперь сам. Вместо того, чтобы пытаться получить класс Desktop из java.awt.Desktop, я просто перезаписал метод авторизации при авторизации:
AuthorizationCodeInstalledApp ab = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()){
protected void onAuthorization(AuthorizationCodeRequestUrl authorizationUrl) throws IOException {
String url = (authorizationUrl.build());
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
main_Activity.startActivity(browserIntent);
}
};
Я сделал это потому, что authorize () вызовет onAuthorization (), который вызовет browse (), который проверяет, поддерживается рабочий стол или нет. Итак, переписав метод onAuthorization (), мне больше не понадобится этот класс. Мой переписанный класс просто запустит новое окно браузера с этим URL-адресом авторизации на вашем устройстве Android.
Надеюсь, мне удалось помочь любому, кто столкнется с этой проблемой.
Ответ Dnsiv работает правильно, но я также должен добавить FLAG_ACTIVITY_NEW_TASK в свое намерение.