-
Notifications
You must be signed in to change notification settings - Fork 107
Совместная работа двух и более программ, основанных на NextGIS Mobile, с аккаунтами (или java.lang.SecurityException: caller uid XXXXX is different than the authenticator's uid)
Для того, чтобы две и более программ, основанных на NextGIS Mobile, могли корректно работать с учетными записями пользователей (аккаунтами), должны быть соблюдены следующие условия:
-
В манифесте каждой программы должны быть указаны разрешения AUTHENTICATE_ACCOUNTS, GET_ACCOUNTS, MANAGE_ACCOUNTS, USE_CREDENTIALS, READ_SYNC_SETTINGS, READ_SYNC_STATS, WRITE_SYNC_SETTINGS.
-
Все присутствующие в системе программы, основанные на NextGIS Web, должны быть собраны или как release, или как debug.
-
Если есть необходимость для тестирования одной из программ использовать сервер testfairy.com, то все остальные программы, основанные на NextGIS Web, должны быть удалены из системы.
-
В соответствии с руководством от Google (ссылка ниже) в манифесте приложения должен быть подобный код:
<service ...>
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
Если на устройстве установлено два приложения с одинаковым accountType (в нашем случае "com.nextgis.account"), но в одном из приложений данного кода в манифесте нет, то оба приложения будут исправно работать, пока не будет удалено то, где он есть. Приложение без этого кода перестанет работать. При попытке создать подключение через
AccountManager.addAccountExplicitly()
будет возникать исключение
java.lang.SecurityException: uid XXXXX cannot explicitly add accounts of type: com.nextgis.account
По этой причине полезно проверить работу приложения на "чистом" устройстве, где нет других приложений с тем же accountType.
Полезные ссылки по проблеме:
Руководство от Google: https://developer.android.com/training/id-auth/custom_auth.html
Инструкция для отладки: http://stackoverflow.com/a/6072364
https://bugzilla.mozilla.org/show_bug.cgi?id=716798
http://stackoverflow.com/questions/10300534/securityexception-when-trying-to-add-an-account
Дополнительные рассуждения есть по ссылке.