Установщик не показывает все разрешения, которые я запрашиваю (Android) - PullRequest
2 голосов
/ 28 марта 2012

Это мой раздел разрешений моего манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.adelco.ventamovil"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"></uses-permission>
<uses-permission android:name="android.permission.DELETE_PACKAGES"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

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

Перспектива DDMS выдает это предупреждение при установке приложения:

03-28 10: 48: 36.627: WARN / PackageManager (144): нет предоставление разрешения android.permission.INSTALL_PACKAGES для упаковки com.adelco.ventamovil (protectionLevel = 3 флажка = 0xbe44)

03-28 10: 48: 36.627: WARN / PackageManager (144): разрешение не предоставляется android.permission.DELETE_PACKAGES для упаковки com.adelco.ventamovil (protectionLevel = 3 флажка = 0xbe44)

Что здесь происходит ...?

Спасибо !!

Ответы [ 3 ]

4 голосов
/ 28 марта 2012

Извините,

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

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

Лучшее, что вы можете сделать, - это отправить пользователя на страницу установки пакета и позволить ему принять меры, если они того пожелают.Посмотрите на это намерение действия, которое вы можете отправить, чтобы запустить этот процесс для установки,

http://developer.android.com/reference/android/content/Intent.html#ACTION_INSTALL_PACKAGE

и для удаления,

http://developer.android.com/reference/android/content/Intent.html#ACTION_UNINSTALL_PACKAGE

4 голосов
/ 28 марта 2012

INSTALL_PACKAGES и DELETE_PACKAGES находятся в группе signature или signatureOrSystem и, следовательно, не могут быть предоставлены «обычному» приложению:

Разрешение, что системапредоставляет только приложениям, которые находятся в образе системы Android или подписаны с теми же сертификатами, что и сертификаты в образе системы

См. android: protectionLevel .

0 голосов
/ 28 марта 2012

Вы ставили свои разрешения таким образом?

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.package"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...