2013-04-12 4 views
1

Я пытаюсь реализовать «безопасный» широковещательный приемник, который принимает только трансляции из определенного приложения. Это потому, что я хочу сделать плагин для своего приложения, которое запускает действия через трансляции. Поскольку эти действия (частично) разумны, было бы неплохо проверить, действительно ли отправитель является моим приложением. Насколько я видел, невозможно проверить пакет отправителя? Было бы безопасно определить для этого пользовательское разрешение? Если да, как я могу это сделать? Какие еще существуют возможности для этого?Android делает приемник трансляции безопасным

Заранее благодарен!

ответ

10

Было бы безопасно определить для этого специальное разрешение?

Если и приложение, и плагин написаны вами, пользовательское разрешение с android:protectionLevel="signature" будет идеальным решением для вашей проблемы. Никакие приложения не смогут отправлять трансляции вашему получателю без этого разрешения, которое может храниться только приложениями, подписанными одним и тем же ключом подписки. В качестве бонуса пользователям не обязательно соглашаться на разрешение во время установки.

Совет: укажите элемент <permission> как в приложении, так и в плагине, поэтому порядок установки этих двух параметров не имеет значения.

Обратите внимание, что custom permissions have a security flaw до Android 5.0 и on Android 5.0+ no two apps can define the same permission unless they are signed by the same signing key.

+0

Спасибо, что кажется идеальным решением! :) – Fleckdalm

+0

Твердый про совет Мистер Мерфи. Благодаря! – worked

+0

@worked: Спасибо за комментарий, так как он указал мне, что мне нужно обновить этот ответ. – CommonsWare

0

Определение пользовательского разрешения в манифесте:

<permission android:name="com.example.myapp.permission.NAME" 
    android:protectionLevel="normal" /> 

На ресивере, добавьте атрибут разрешения:

<receiver android:name="MyReceiver" 
    android:permission="com.example.myapp.permission.NAME" /> 
+1

'android: protectionLevel =" normal "' позволит любому приложению удерживать разрешение при условии одобрения пользователя. Это может быть то, чего хочет OP, хотя, похоже, это не будет основано на вопросе. – CommonsWare

Смежные вопросы