2012-03-28 2 views
2

Это мой раздел разрешений моего манифеста:Installer не показывают все разрешения я запрашиваю (Android)

<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> 

Но когда я пытаюсь установить пакет, то Wizzard показывает только в Интернете и писать внешний Разрешения на хранение.

Перспектива 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 flags = 0xbe44)

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

Спасибо!

ответ

4

К сожалению,

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

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

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

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

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

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

-1

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

<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" /> 
+0

Да ... Я добавляю заголовок манифеста к образцу кода ... – Desenfoque

3

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

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

См. android:protectionLevel.

+0

Подождите ... Но он работал нормально до вчерашнего дня ... И он должен работать в эмуляторе? – Desenfoque

+0

@Desenfoque, что вы имеете в виду именно «это сработало»? Вы можете установить или удалить пакеты? Я вряд ли могу в это поверить. Ему нужно было только работать в эмуляторе, если там будет включен сертификат подписи, но я сомневаюсь в этом. – Leo

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