我有以下代码来尝试自动更新我的应用程序:
updateIntent = new Intent(Intent.ACTION_VIEW);
updateIntent.setDataAndType(Uri.fromFile(new File(apkFile)), "application/vnd.android.package-archive");
startActivity(updateIntent);
apkFile 包含一个世界可读的 APK 文件的完整路径以及正在运行的应用程序的新版本。
我的代码启动 updater-Intent,我会要求确认安装该应用程序。
我给出这个确认,系统显示一个状态栏并说将安装该应用程序,然后它说无法安装该应用程序,没有任何理由。
日志没有提供进一步的线索:
I/ActivityManager( 61): Starting activity: Intent { dat=file:///data/data/de.lucabert.mybackup/cache/MyBackup.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) }
W/InstallAppProgress( 327): Replacing package:de.lucabert.mybackup
I/ActivityManager( 61): Displayed activity com.android.packageinstaller/.InstallAppProgress: 810 ms (total 810 ms)
D/dalvikvm( 294): GC_EXPLICIT freed 257 objects / 16648 bytes in 673ms
D/PackageParser( 61): Scanning package: /data/app/vmdl53189.tmp
D/dalvikvm( 61): GC_EXPLICIT freed 6145 objects / 369824 bytes in 255ms
D/dalvikvm( 212): GC_EXPLICIT freed 102 objects / 6312 bytes in 130ms
I/InstallAppProgress( 327): Finished installing de.lucabert.mybackup
I/global ( 692): Default buffer size used in BufferedWriter constructor. It would be better to be explicit if an 8k-char buffer is required.
D/MyBackup( 692): Update successfully. Closing program
我在模拟器上运行这段代码,使用 Android API 8。
有人能告诉我我做错了什么吗?
非常感谢 Luca Bertoncello