我正在开发一个应用程序,它需要一个谷歌帐户才能获得某些选项。未检测到帐户时禁用选项,但我通过弹出窗口询问用户添加一个,如果用户单击是,则活动应该开始。显示全局“添加帐户”页面工作正常,但我想跳过那个不需要的额外步骤。毕竟,如果需要 Google 帐户,为什么要向某人提供添加 Exchange 帐户的选项,这只是令人困惑。所以我想默认使用新的 Google 帐户设置页面。
爪哇
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/ 侦听器中。
AccountManager acm = AccountManager.get();
acm.addAccount("com.google", null, null, null, null, null, null);