android 使用 AccountManager 添加帐户,未找到 Activity 来处理 Intent { act=android.settings.ADD_ACCOUNT_SETTINGS(有额外的)}

android Adding Account with AccountManager, No Activity found to handle Intent { act=android.settings.ADD_ACCOUNT_SETTINGS (has extras) }

在某些 phone 中(准确地说是在某个 "oneplus" android v6.0.1 中)。当我尝试使用似乎是 "right" 的方式调用帐户添加屏幕时,出现 No Activity found to handle Intent { act=android.settings.ADD_ACCOUNT_SETTINGS (has extras) } 错误。

 Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
 intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[]{Constants.ACCOUNT_TYPE});
 startActivity(intent);

我似乎可以添加

<intent-filter>
       <action android:name="android.settings.ADD_ACCOUNT_SETTINGS" />
</intent-filter>

登录 activity,但我应该这样做吗?如果是这样,为什么它在大多数 phone 上工作但在一个上崩溃。我希望我的帐户意图像用户试图通过 phone 的设置屏幕创建帐户一样通过,这似乎是一个糟糕的快捷方式。

在 android 中设置自定义帐户需要

Four things。实施 Abstractaccountauthenticator 以公开添加帐户等的方法。扩展 AccountAuthenticatorActivity 交易的视图部分。在 android 清单中引用了 xml 资源文件,该文件本身引用图标、字符串标签和 xml 资源文件。

现在我怀疑您使用的是预先存在的帐户类型,google 可能适用于大多数手机。所有 android 都有 gmail 或 googleplay 商店。一些 google 应用程序。所以最大的问题是代码中 Constants.ACCOUNT_TYPE 的值是多少,你想创建自己的自定义帐户类型吗?

终于找到问题了。显然,我提到的 phone 是 运行ning on a cyanogen,无论出于何种原因,其他 android 6 phones(和模拟器)不需要 GET_ACCOUNT请求我自己的应用程序帐户的权限,这 phone 做到了。

该错误没有说明缺少权限,但是在使用 运行 次请求获取 GET_ACCOUNT 后,它按预期运行。