После документации для загрузки файла с устройства Android на Google Диск я написал тестовое приложение, которое успешно загружает файл, но моя попытка скопировать соответствующий код в большее приложение не загружает файл, поскольку его Google Выбор учетной записи всегда получать отменен:Почему аккаунт Picker в приложении Android отменяется?
- onActivityResult() код результата равен 0 (т.е. RESULT_CANCELED)
- onActivityResult() намерение аргумент имеет нулевое значение, и
- LogCat (как показано ниже) показывает, что «Активность запускается как новая задача, поэтому отмена активности. "
04-22 02: 04: 25,098 D/alsa_ucm (162): snd_use_case_set(): uc_mgr 0x40e59388 идентификатор _verb значение HiFi Lowlatency
04-22 02: 04: 25,098 D/alsa_ucm (162): Установите регуляторы микшера для разрешения колонок 1
04-22 02: 04: 25.098: D/ACDB-LOADER (162): ACDB -> send_afe_cal
04-22 02: 04: 25.098: I/ActivityManager (526)): START u0 {act = com.google.android.gms.common.account.CHOOSE_ACCOUNT cmp = com.google.android.gms/.common.account.AccountPickerActivity (имеет дополнительные функции)} из pid 3484
04-22 02 : 04: 25.098: W/ActivityManager (526): активность запускается как новая задача, поэтому отмена результата операции.
04-22 02: 04: 25.108: D/alsa_ucm (162): установить элементы управления микшером для разрешения низкого уровня HiFi 1
04-22 02: 04: 25.108: D/ALSAModule (162): Возвращаемое значение устройства: hw: 0,14
04-22 02: 04: 25.118: D/ALSAModule (162): setHardwareParams: reqBuffSize 1024 канала 2 sampleRate 48000
04-22 02: 04: 25.118: D/ALSAModule (162): setHardwareParams: buffer_size 2048, period_size 1024, period_cnt 2
04-22 02: 04: 25.188: D/dalvikvm (526): GC_FOR_ALLOC освобожден 565K, 15% бесплатно 18562K/21684K, приостановлено 71 мс, всего 71 мс
04-22 02:04: 25.248: D/overlay (159): Unset pipe = VG0 dpy = 0; Unset pipe = VG1 dpy = 0; Unset pipe = RGB1 dpy = 0
04-22 02: 04: 25.248: W/InputMethodManagerService (526): окно уже сфокусировано, игнорируя усиление фокусировки: [email protected] атрибут = null, токен = [email protected]
04-22 02: 04: 27.991: D/dalvikvm (526): GC_FOR_ALLOC освобожден 422K, 15% бесплатно 18564K/21684K, приостановлено 65 мс, всего 66 мс
04- 22 02: 04: 28.011: I/ActivityManager (526): больше не требуется com.google.android.marvin.talkback (pid 5301): пустой # 17
04-22 02: 04: 28.241: D/overlay (159): Установить pipe = RGB1 dpy = 0; Set pipe = VG0 dpy = 0; Set pipe = VG1 dpy = 0;
04-22 02: 04: 28.672: D/overlay (159): Unset pipe = VG0 dpy = 0; Unset pipe = VG1 dpy = 0; Unset pipe = RGB1 dpy = 0;
Код, который запускает сборщик учетных записей Google, в обоих приложениях одинаковый, но сборщик отменяется только в более крупном приложении.
// Handle item selection
case R.id.action_select_account:
mCredential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);
Intent intent2 = mCredential.newChooseAccountIntent();
showToast("intent extra: " + intent2.getStringExtra(AccountManager.KEY_ACCOUNT_NAME)); // TODO: remove after test
startActivityForResult(intent2, REQUEST_ACCOUNT_PICKER);
return true;
default:
return false;
Тестовое приложение и больше приложений являются обе версии отладки, в том числе тех же банок (как показано ниже), и работает на том же устройстве (Nexus 4, ОС 4.2.2), но, как это было предложено в пяти минутное быстрое начало, каждое приложение имеет свой собственный идентификатор клиента, генерируемый Google APIs Console.
Результат этого отмена является то, что onActivityResult() работает, как только Picker аккаунта Google получает нарисован, задолго до того, выбран счет.
UPDATE:
После приблизительно равного количества проб и ошибок, то получается, что удаление следующих из AndroidManifest.xml исправили проблему.
android:launchMode="singleInstance"
Мой первоначальный вопрос о том, почему теперь переходит к тому, почему сборщик учетных записей Google в Android должен создавать несколько экземпляров?
Спасибо,
Грег
Вы как-то запускали AccountPicker с singleInstance или удалили singleInstance из своего собственного действия, которое использовало код accountmanager? – gleenn