成功进行基本身份验证后,我想添加一个帐户供以后使用.当我尝试使用以下代码创建此帐户时:
AccountManager accountManager = AccountManager.get(getBaseContext());
final Account basicAccount = new Account(mEmail, "com.example");
accountManager.addAccountExplicitly(basicAccount, mPassword, null);
Run Code Online (Sandbox Code Playgroud)
当调用addAccountExplicitly(...)时,应用程序崩溃并出现以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: Process: com.example, PID: 19094
E/AndroidRuntime: java.lang.SecurityException: uid 10107 cannot explicitly add accounts of type: com.example
E/AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1599)
E/AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1552)
E/AndroidRuntime: at android.accounts.IAccountManager$Stub$Proxy.addAccountExplicitly(IAccountManager.java:890)
E/AndroidRuntime: at android.accounts.AccountManager.addAccountExplicitly(AccountManager.java:712)
E/AndroidRuntime: at com.example.LoginActivity$UserLoginTask.onPostExecute(LoginActivity.java:244)
E/AndroidRuntime: at com.example.LoginActivity$UserLoginTask.onPostExecute(LoginActivity.java:209)
E/AndroidRuntime: at android.os.AsyncTask.finish(AsyncTask.java:651)
E/AndroidRuntime: at android.os.AsyncTask.-wrap1(AsyncTask.java)
E/AndroidRuntime: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/ActivityManager: Force finishing activity com.example/.LoginActivity
Run Code Online (Sandbox Code Playgroud)
题:
谢谢,Ove
小智 28
在我的情况下,我发现我在设备上安装了另一个具有相同帐户名称和类型的应用程序,但具有与我尝试安装的签名证书不同的签名证书.
所以它崩溃了应用程序.
检查android doc以获取方法addAccountExplicity,它说:
此方法要求调用者与拥有指定帐户的身份验证器具有签名匹配.
那是我的问题
Ove*_*olt 26
1)崩溃的原因是因为AndroidManifest.xml中缺少以下代码段.
<service android:name="com.example.accounts.GenericAccountService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" />
</service>
Run Code Online (Sandbox Code Playgroud)
2)绝对可能,即使最佳实践示例仍然缺失.
3)不知道.然而...
ket*_*nkk 17
您正在使用 "com.example"应用的唯一标识符,请检查它是否相同"authenticator.xml"
小智 5
这可能是由于ACCOUNT_TYPE不匹配造成的。检查Class中的ACCOUNT_TYPE和authenticator.xml中的ACCOUNT_TYPE必须匹配
private static final String ACCOUNT_TYPE = "com.someonew.syncaccount";
Run Code Online (Sandbox Code Playgroud)
authenticator.xml
<?xml version="1.0" encoding="utf-8"?>
<account-authenticator
xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="com.someonew.syncaccount"
android:icon="@mipmap/ic_launcher_round"
android:smallIcon="@mipmap/ic_launcher_round"
android:accountPreferences="@xml/syncsettings"
android:label="@string/app_name"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16869 次 |
| 最近记录: |