Ответ 1
Ответы на ваши вопросы приводятся ниже. Но вы можете обратиться http://developer.android.com/guide/topics/manifest/permission-element.html для лучшего понимания прав Android.
1. Да, если вы объявляете
android:protectionLevel="dangerous"
то система не может автоматически предоставить ее запрашивающему приложению. Любые опасные разрешения, запрашиваемые приложением, могут отображаться пользователю и требуют подтверждения перед продолжением.
Базовое приложение, определяющее пользовательское разрешение, должно предоставить описание через
android:description="string resource"
Вот пример разрешения. Надеюсь, это объяснительно.
<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />
2. Насколько я знаю, клиентское приложение не может видеть присутствие базового приложения во время установки. Но это возможно при запуске клиентского приложения. В любом случае, разрешения предоставляются системой Android на основе вашего файла android.xml. Таким образом, клиентское приложение не должно беспокоиться о базовом приложении во время установки.
3. Базовое приложение можно удалить, даже если клиентское приложение все еще установлено. Это не будет происходить через какие-либо сообщения об ошибках или исключения безопасности на любом этапе. Но когда вы снова пытаетесь запустить клиентское приложение, вы можете получить исключение "Activity not found" в том месте, где вы пытаетесь вызвать активность базового приложения из клиентского приложения.