Ich entwickle eine Android-Anwendung. In meiner Anwendung suche ich nach einer neuen Version der neuesten apk in MainActivity. Wenn die Anwendung aktualisiert werden muss, lade ich einfach die apk-Datei mit Retrofit vom Server herunter und fordere den Benutzer auf, die heruntergeladene apk-Datei zu installieren. Der gesamte Download-Prozess wurde ohne Probleme ausgeführt. Aber ich habe ein Problem mit der Aufforderung an den Benutzer. Ich folgte this link.Kann nicht aufgefordert werden, apk-Datei in Android zu installieren
Dies ist, wie ich in MainActivity prompt
public void promptToInstallDownloadedApk(String path)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "application/com.football.waiyanhein.tonightfootballreport");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
Wenn ich den Code ausführen, es diesen Fehler wirft.
.354 12750-12750/com.football.waiyanhein.tonightfootballreport E/Android Runtime: fatal EXCEPTION: main Prozess: com.football.waiyanhein.tonightfootballreport, PID: 12750 android.content.ActivityNotFoundException: Nein Aktivität gefunden für Absicht {act = android.intent.action.VIEW dat = file: ///storage/emulated/0/Android/data/com.football.waiyanhein.tonightfootballreport/files/tonight_football_report.apk typ = application/com.football.waiyanhein.tonightfootballreport flg = 0x10000000} bei android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1798) bei android.app.Instrumentation.execStartActivity (Instrumentation.java:1512) bei android.app.Activity.startActivityForResult (Activity.java:3917) bei android.support.v4.app.BaseFragmentActivityJB.startActivityForResult (BaseFragmentActivityJB.java:48) bei android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:77) bei android.app.Activity.startActivityForResult (Activity.java:3877) unter android.suppor t.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:859) bei android.app.Activity.startActivity (Activity.java:4200) bei android.app.Activity.startActivity (Activity.java:4168) at com.football.waiyanhein.tonightfootballreport.MainActivity.promptToInstallDownloadedApk (MainActivity.java:912) bei com.football.waiyanhein.tonightfootballreport.MainActivity.writeApkDownloadResponseBodyToDisk (MainActivity.java:893) bei com.football.waiyanhein.tonightfootballreport .MainActivity $ 15.onResponse (MainActivity.java:850) um re trofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall $ 1 $ 1.run (ExecutorCallAdapterFactory.java:68) bei android.os.Handler.handleCallback (Handler.java:739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (native Methode) um com. android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) 05-14 04:19:18.359 679-1124/system_process W/ActivityManager: Force Veredlungsaktivität com.football.waiyanhein.tonightfootballreport/.MainActivity 05-14 04: 19: 18.387 664-664 /? E/EGL_emulation: tid 664: eglCreateSyncKHR (1215): Fehler 0x3004 (EGL_BAD_ATTRIBUTE) 05-14 04: 19: 18,505 679-10967/system_process I/OpenGLRenderer: Initialized EGL, Version 1,4
kann Warum frage ich nicht? Ich setze "application/com.football.waiyanhein.tonightfootballreport" um zu promoten. Das ist mein Paketname.
Ich habe das auch versucht, aber es funktioniert nicht.
public void promptToInstallDownloadedApk(String path)
{
Intent promptInstall = new Intent(Intent.ACTION_VIEW)
.setDataAndType(Uri.parse(path),
"application/vnd.android.package-archive");
startActivity(promptInstall);
}
sollte '„application/vnd.android.package-Archiv“sein' 100% Verwendung dieses und postest den Fehler, den Sie bekommen, ist dies eigentlich nicht ur Paket sein Name., kann da etwas mit dem 'Pfad' nicht stimmen? – Yazan