Я разрабатываю приложение, которому для определенных параметров требуется учетная запись Google. Параметры отключены, когда учетная запись не обнаружена, но я предлагаю пользователю добавить ее, запросив всплывающее окно, если пользователь нажмет «да», действие должно начаться. Он отлично работает для отображения глобальной страницы «Добавить учетную запись», но я хочу пропустить этот ненужный дополнительный шаг. В конце концов, зачем предоставлять кому-то возможность добавить учетную запись Exchange, если требуется учетная запись Google, это просто сбивает с толку. Поэтому я хочу по умолчанию использовать новую страницу настройки учетной записи Google.
Java
try {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName( "com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity");
//if(getApplicationContext().getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
getApplicationContext().startActivity(intent);
//} else {
//getApplicationContext().startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
//}
} catch ( ActivityNotFoundException e) {
e.printStackTrace();
}
Когда я запускаю это, возникает следующее исключение:
05-29 18:24:50.741: W/System.err(10875): android.content.ActivityNotFoundException: невозможно найти явную активность класс {com.google.android.gsf/com.google.android.gsf.login.AccountIntroActivity}; Вы объявили эту активность в своем AndroidManifest.xml?
Androidmanifest.xml
<activity
android:name="com.google.android.gsf.login.AccountIntroActivity"/>
ВОПРОС: что я здесь упускаю?
РЕДАКТИРОВАТЬ:
Я попробовал другой способ, используя addAccount, это не работает, ничего не происходит, никаких ошибок не выдается, никакие новые действия не начинают добавлять учетную запись Google. Кстати, весь блок try catch в оригинальной версии находится в AlertDialog/listener.
AccountManager acm = AccountManager.get();
acm.addAccount("com.google", null, null, null, null, null, null);