5

何のbindServiceAsUser()ために使われる方法なのか理解できません。誰でも親切に説明してもらえますか?グーグルはあまり役に立たないようです。

    public boolean bindService(Intent intent, ServiceConnection connection, int flags) {
    return mContext.bindServiceAsUser(intent, connection, flags, UserHandle.OWNER);
}
4

2 に答える 2

1

を使用する必要性を感じたことはありませんがbindServiceAsUser()、Android のドキュメントには次のように記載されています。

bindService(android.content.Intent,android.content.ServiceConnection,int) と同じですが、システム サーバーやその他のマルチユーザー対応コードで使用するための明示的な userHandle 引数があります。

マルチユーザー サポートは、Android 4.2 (API: 17) で追加されました。詳しくは、こちらをご覧ください。私の理解では、これは主にデバイス メーカーによって使用され、たとえばエンタープライズ向けの特別なデバイスをリリースします。私が見つけたマルチユーザー向けの最良のドキュメントはそこにあるすべての参照リンクとともに、これです。

于 2015-06-03T09:04:20.813 に答える
1

Vesko が言ったように、ほとんどの Android デバイスではマルチ ユーザーが無効になっています。一部のデバイス メーカーは、これを有効にしています。たとえば、サービスを AIDl にバインドし、特権アプリでユーザーの機能を無効にする必要があります。ここでは、サービスをどのユーザーとしてバインドするかを知る必要があります。bindServiceAsUserリフレクションを使用して呼び出すことができます。

  UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
        UserHandle owner = null;
                    owner = um.getUserForSerialNumber(0L);
                  try {
            MethodUtils.invokeMethod(getApplicationContext(), "bindServiceAsUser", new Object[]{i, serviceConnection, Context.BIND_AUTO_CREATE, owner});
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
于 2019-04-20T13:13:17.303 に答える