Может ли приложение дать свое разрешение другому приложению в Android? - PullRequest
2 голосов
/ 03 апреля 2011

У меня есть приложение «А», у которого все разрешения включены при установке.Другое приложение Скажи Б не имеет разрешения и хочет получить это разрешение.Может ли Б связаться с А, чтобы А мог передать свое разрешение Б.

PLS-ответ.Я хочу получить некоторые разрешения динамически.Это лучшая идея или любая другая идея?

Ответы [ 4 ]

3 голосов
/ 14 декабря 2011

Насколько я знаю, приложения не обязательно могут давать разрешения другим приложениям, НО AppB может наследовать разрешения от AppA, если вы являетесь разработчиком обоих приложений. Если и AppA, и AppB объявляют одно и то же значение sharedUserId в своем манифесте (android: sharedUserId = "xyz") И AppA, и AppB подписаны одной и той же подписью, то Android будет считать их одним и тем же приложением в отношении разрешений. Таким образом, AppB может существовать на устройстве без разрешения «perm1», например. Затем AppA может быть установлен с «perm1». Если AppA и AppB имеют одинаковый sharedUserId и подпись, то при установке AppA AppB будет «предоставлен» «perm1».

Я не проверял это только сейчас, но я знаю, что он работал (год назад или около того).

1 голос
/ 13 сентября 2012

Да, это возможно окольным путем, используя PendingIntents.Это не точный фрагмент кода, но он должен дать вам идею:

Вы не можете передавать разрешения, но вы можете передавать возможности для выполнения определенных действий от A до B. Допустим, вы хотите передать возможность выполненияопределенный ACTION.

  1. A должен создать ожидающее намерение:

    Intent intent = new Intent(ACTION);
    PendingIntent pIntent = PendingIntent.getActivity(context, requestCode, intent, flags);

  2. A отправляет это B, направляя ожидающее намерение

    Intent intent = new Intent(context, B.class);
    intent.putExtra("pendingIntent", pIntent);
    startActivity(intent);

  3. В B мы десериализуеможидаемое намерение, и мы можем использовать его для выполнения ограниченного ACTION

    PendingIntent pIntent = intent.getExtra("pendingIntent");
    pIntent.send();

1 голос
/ 03 апреля 2011

Ваше приложение A может предоставить некоторым контент-провайдерам доступ к информации.Приложение B может использовать контент-провайдера A для получения информации.http://developer.android.com/guide/topics/providers/content-providers.html

Но почему-то это звучит так, будто ты хочешь сделать что-то злое.Если вы хотите получить больше информации, пожалуйста, предоставьте больше информации о том, что вам нужно сделать!

1 голос
/ 03 апреля 2011

Это было бы совершенно небезопасно, не думаете ли вы, если бы приложение могло дать какие-либо разрешения другому приложению ...

Какой-то злодей должен был бы просто убедить вас установить его Априложение ;и затем, независимо от того, какое другое приложение B вы бы установили, этому приложению B не нужно было бы запрашивать какое-либо конкретное разрешение при установке (оно будет впоследствии предоставлено A) - и B все равно будетбыть в состоянии сделать что-нибудь на вашем устройстве?

Я очень надеюсь, что то, что вы спрашиваете, невозможно; -)

...