2016-04-04 8 views
0

Ich versuche in android apk von Datei zu installieren, aber der Ausgang ist:Intent zu installieren APK in Android

es ein Problem ist das Paket Parsing

Wenn ich mit dem Android-Explorer versuchen, die APK installieren.

Mein Code:

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()); 
    } 
} 

Die manifest

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

Shows:

ANDROID.CONTENTE Activiy NOTFOUND Ausnahme behandeln Intente {ACT = android.intent.action.view dat = Datei: ///mounted/donwloadedfile.apk type = application /}

+0

mit Woher kommt 'llegada' Punkt? Beachten Sie außerdem, dass Sie einen Tippfehler in Ihrem MIME-Typ haben und dass Sie die Berechtigung "INSTALL_PACKAGES" nicht behalten können, sofern Ihre App nicht vom Signaturschlüssel der Firmware signiert wurde. – CommonsWare

+0

Ok, lassen Sie mich INSTALL PAKETE entfernen und zeigen llegada –

Antwort

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

Nein, diese Datei existiert nicht.

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

Das ist kein gültiger Pfad auf irgendeinem Android-Gerät, das in der Geschichte der Menschheit hergestellt wurde. getExternalStorageState() wird einen Wert wie unmountable zurückgeben, nicht irgendein Dateisystemverzeichnis. Diese

+0

Wenn ich Environment.getExternalStorageState() zu "/ SDCard /"? –

+0

@DanielORTIZ: Ich würde etwas wie 'Environment.getExternalStorageDirectory()' oder 'Environment.getExternalStoragePublicDirectory()' empfehlen. – CommonsWare

1

:

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

Ist das nicht tun, was Sie davon aus, es tut, wie @CommonsWare erwähnt hat.

Vorausgesetzt, dass Sie Datei im Gerätespeicher gesagt haben, die Sie verwenden möchten: Environment.getExternalStorageDirectory() oder Environment.getExternalStoragePublicDirectory() oder sogar getExternalCacheDir() wenn Ihre Download-Routine unterstützt wird.

0

ich beschlossen 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); 
Verwandte Themen