2016-05-20 3 views
0

Я использую accountmanager в своем приложении. Сначала я проверяю учетную запись, чтобы узнать, существует ли она. если это не так, добавляется явно. Кодекс врезается в addaccountexplicitly()Android App Сбой AddAccountExplicitly

Account[] accounts = AccountManager.get(this).getAccountsByType(getString(R.string.authtype)); 
     if(accounts.length==1) 
     { 
      Toast.makeText(this,accounts[0].name,Toast.LENGTH_SHORT).show(); 
      Intent i = new Intent(Splash.this, MapsActivity.class); 
      startActivity(i); 
      finish(); 
     } 
     else 
     { 
      boolean accountCreated = mAccountManager.addAccountExplicitly(new Account("sasa",getString(R.string.authtype)), "", null); 

      Intent i = new Intent(Splash.this, MainActivity.class); 
      startActivity(i); 
      finish(); 
     } 

Краш Вход

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524) 
                      at android.app.ActivityThread.access$900(ActivityThread.java:154) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:224) 
                      at android.app.ActivityThread.main(ActivityThread.java:5526) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                     Caused by: java.lang.SecurityException: uid 10149 cannot explicitly add accounts of type: com.rakebny.musta.authtype 
                      at android.os.Parcel.readException(Parcel.java:1627) 
                      at android.os.Parcel.readException(Parcel.java:1579) 
                      at android.accounts.IAccountManager$Stub$Proxy.addAccountExplicitly(IAccountManager.java:890) 
                      at android.accounts.AccountManager.addAccountExplicitly(AccountManager.java:722) 
+0

Пожалуйста, покажите свой файл манифеста, чтобы мы могли его проверить и убедиться, что вы правильно указали свою службу аутентификации. – ishmaelMakitla

+0

разрешение на проверку манифеста –

+0

Разрешения JenuRudan

ответ

1

Для того, чтобы устройство для обработки пользовательского типа счета, он должен иметь аутентификатор зарегистрированный для данного типа счета.

После того, как у вас есть аутентификатор, вы объявляете его в качестве службы в манифесте:

 <service 
      android:name=".MyAuthenticationService" 
      android:exported="false" > 
      <intent-filter> 
       <action android:name="android.accounts.AccountAuthenticator" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.accounts.AccountAuthenticator" 
       android:resource="@xml/authenticator" /> 
     </service> 

Тогда /res/xml/authenticator.xml расскажет системе о типе вашего аккаунта:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accountType="@string/authtype" 
    android:label="@string/app_name" 
    android:icon="@drawable/ic_launcher" 
    android:smallIcon="@drawable/ic_launcher" /> 

Вам также потребуется разрешение

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 

Вот абсолютная лучшая статья на веб для кодирования пользовательского андроидентификатора Android: Write your own Android Authenticator

Смежные вопросы