1

環境:

2 つの Android アプリがインストールされているとします。A にはカスタム Authenticator コードが含まれ、新しいアカウントを AccountManager に追加できます。B にはシングルタッチ サインイン フローが必要です。アカウントは、A によって AccountManager にまだ作成されていないと想定できます。

質問:

B の観点から、A アプリからandroid.permission.MANAGE_ACCOUNTSB) の AndroidManifest で宣言する必要がある AccountManager の addAccount メソッドを使用し、インテントを介して呼び出すだけで、B のアカウントを作成する利点は何ですか。 exporting the LoginActivityA は、必要なすべてのアクセス許可を既に宣言しています。後者の解決策の方が実際には優れていると思われる場合 (さらに別のアクセス許可を宣言する必要がないため)、意見を裏付ける興味深い発言があれば教えてください。

LoginActivity はエクスポートされますが、アクセス許可を使用して保護する必要はないと想定できます。これが持つ唯一の副作用は、AccountManager でアカウントを作成することだけです。これはまさに私たちが必要としているものです。

その他:

より多くのコンテキストを提供するために、これが私の質問に答えるのに役立つ場合:

  • A がインストールされていない場合、B は独自のサインイン フォームにフォールバックします (ただし、オーセンティケーターとして機能せず、アカウントを作成しません。取得した OAuth トークンは B のみが使用します)。
  • B は INTERNET パーミッションを宣言します
  • A と B の両方が同じリリース キーで署名されている
  • A と B は android:sharedUserId を共有しません
4

1 に答える 1

0

パーミッションがほとんどないアプリを用意するのは良い考えですが、これは、インターネットとの通信に 2 つ目のアプリを使用するためのある種の不正行為です。

AccountManagerアプリがアンインストールされた場合に備えて、計画を立てることが非常に重要です。この場合、承認プロセスによっては大きな問題があります。

ただし、PackageManager両方のアプリがインストールされているかどうかを確認できます。


他のアプリをオプションにすることをお勧めします。両方のアプリが少なくともインターネットのアクセス許可を持っている場合、通信がクローキングされているという印象はありません。他のアプリが公開API/インテントを使用できないという利点がある特別なアクセス許可。私はあなたのデザインを知りませんし、これが問題になる可能性があるかどうかもわかりません。ただし、別のパーミッションを使用したとしても、悪意のあるアプリがそのパーミッションを要求する可能性もあります。

于 2013-01-23T17:12:55.100 に答える