Получить личность вызывающего абонента в onBind() службы в Android

В onBind() метод службы Я хотел бы проверить, есть ли у вызывающего абонента конкретное разрешение. Для этого мне нужно найти личность звонящего.

Я ожидал, что следующий код вернет имя пакета вызывающей стороны, но вместо этого я получу имя пакета службы. Что я делаю неправильно?

Binder.getCallingUid()
String pkg = getPackageManager().getNameForUid(uid);

1 ответ

Там нет необходимости делать этот тип операции. Если вы хотите защитить связывание, запуск или остановку вашего Service затем добавьте android:permission атрибут вашего декларации декларации о Service:

<service android:name=".MyService"
         android:permission="com.example.myapp.permission.SERVICE_USER" >
    <intent-filter>
    ...
    </intent-filter>
</service>

Система автоматически гарантирует, что любое приложение, пытающееся использовать ваш сервис, имеет указанное разрешение. Вы используете только API принудительного / проверочного разрешения внутри открытых вызовов связывателя. Вы можете найти эту статью полезной: http://po.st/d6eTXj.

Другие вопросы по тегам