2016-04-04 2 views
0

Пытаюсь установить APK из файла в андроид, но выход:Намерения установить APK в Android

Существует проблема с обработкой пакета

Если я попробовать с андроида Проводником Установка APK.

Мой код:

public void instalarPath() { 
    try { 
     File file = new File(Environment.getExternalStorageState() + "/downloadedfile.apk"); 
     mensaje(file.getName());//File existis 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(file), "application/vnd.andriod.package-archive"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    } catch (Exception e) { 
     mostrarcasoderrror(e.toString(), e.toString()); 
    } 
} 

манифеста

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

Шоу:

ANDROID.CONTENTE ACTIVIY NOTFOUND ИСКЛЮЧЕНИЕ HANDLE INTENTE {ACT = android.intent.action.VIEW dat = file: ///mounted/donwloadedfile.apk type = application /}

+0

Где делает 'точку llegada' к? Также обратите внимание, что у вас есть опечатка в вашем типе MIME и что вы не можете удерживать разрешение 'INSTALL_PACKAGES', если ваше приложение не подписано ключом подписи прошивки. – CommonsWare

+0

Хорошо, позвольте мне удалить УСТАНОВКИ ПАКЕТЫ и показать llegada –

ответ

2
mensaje(file.getName());//File existis 

Нет, этого файла не существует.

File file = new File(Environment.getExternalStorageState() + "/downloadedfile.apk"); 

Это не допустимый путь на любом устройстве Android, выпущенном в истории человечества. getExternalStorageState() вернет значение, подобное unmountable, а не некоторую директорию файловой системы.

+0

Если я изменил Environment.getExternalStorageState() на "/ sdcard /"? –

+0

@ DanielORTIZ: Я бы рекомендовал нечто вроде 'Environment.getExternalStorageDirectory()' или 'Environment.getExternalStoragePublicDirectory()'. – CommonsWare

1

Это:

File file = new File(Environment.getExternalStorageState() + "/downloadedfile.apk" 

Не делать то, что вы предполагая, что он делает, как упоминалось @CommonsWare.

Предполагая, что вы сказали, файл в память устройства, вы хотите использовать: Environment.getExternalStorageDirectory() или Environment.getExternalStoragePublicDirectory() или даже getExternalCacheDir() если загрузка рутина поддерживает его.

0

я решил с помощью MimeTypeMap mime = MimeTypeMap.getSingleton();

File file = new File(llegada); 
     mensaje(Uri.fromFile(file).getEncodedPath());//File existis 
     Intent intent = new Intent(); 
     intent.setAction(android.content.Intent.ACTION_VIEW); 
     // File file = new File(path); 

     MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     String ext=file.getName().substring(file.getName().indexOf(".")+1); 
     String type = mime.getMimeTypeFromExtension(ext); 

     intent.setDataAndType(Uri.fromFile(file), type); 

     startActivity(intent);