1

私のアプリは SyncAdapters を使用して、バックグラウンドでデータを同期します。OS 8.0 を実行し、Android for Work マネージド プロファイル用にセットアップされたデバイスで addAccountExplicitly を呼び出すと、SecurityException がスローされ、アカウントを正しく追加できません。

コールスタックは次のとおりです。

11-28 17:28:00.182 7291-7291/com.example.android.basicsyncadapter E/CreateSyncAccount: Failed
   java.lang.SecurityException: com.google.android.gm from uid 10074 not allowed to perform GET_ACCOUNTS
      at android.os.Parcel.readException(Parcel.java:1942)
      at android.os.Parcel.readException(Parcel.java:1888)
      at android.accounts.IAccountManager$Stub$Proxy.addAccountExplicitly(IAccountManager.java:1205)
      at android.accounts.AccountManager.addAccountExplicitly(AccountManager.java:875)
      at com.example.android.basicsyncadapter.SyncUtils.CreateSyncAccount(SyncUtils.java:58)
      at com.example.android.basicsyncadapter.EntryListFragment.onAttach(EntryListFragment.java:148)

Pixel で 8.0 を実行している 2 つの GitHub プロジェクトを使用して、失敗を再現しました。

GitHub アプリ:

  1. https://github.com/googlesamples/android-testdpc
  2. https://github.com/googlesamples/android-BasicSyncAdapter

上記の例外のスローを再現する手順は次のとおりです。

  1. デバイスを出荷時設定にリセットし、初期状態の画面が表示されるまで待ちます。
  2. アプリケーション android-testdpc をインストールします。Android for Work マネージド プロファイル用のデバイスの設定を完了します。
  3. ポリシーを変更したり、デバイスを再起動したりしないでください。
  4. アプリケーション android-BasicSyncAdapter をインストールして起動します。
  5. Logcat がキャプチャします

私は am_crash: [7489,0,com.example.android.basicsyncadapter,950582854,java.lang.SecurityException,com.google.android.gm from uid 10075 は GET_ACCOUNTS,Parcel.java,1942 の実行を許可されていません]

その他の注意事項:

  • Android 8.0 を搭載したデバイスでのみ SecurityException がスローされています。
  • android-BasicSyncAdapter を起動する前にデバイスを再起動しても、SecurityException はスローされません。現在、ユーザー向けに提案されている回避策。

最初にデバイスを再起動せずに addAccountExplicitly を正常に呼び出す方法を見つけようとしています。

4

1 に答える 1

0

私の Google Pixel デバイスは、私がインストールした 8.1 アップデートを受け取りました。2 つのアプリケーションで再テストします。

  1. https://github.com/googlesamples/android-testdpc
  2. https://github.com/googlesamples/android-BasicSyncAdapter

次に、再現手順に従って、SecurityException がスローされなくなりました。

問題を修正するために変更されたのがテスト アプリではないことを確認するために、指定された 8.0 ROM イメージで Pixel デバイスをフラッシュしました。再テストすると、同じ方法で SecurityException がスローされます。

この問題は、OS バージョン 8.0 以降で修正されたようです。

于 2018-02-15T20:04:55.847 に答える