当通过URL在线找到随机apk时,我可以成功下载并安装它们,提示用户询问是否要安装。但是,当我将相同的apk上传到Google驱动器,然后从Google驱动器运行下载网址时,该apk无法正常工作。我在设备屏幕上收到“解析程序包时出现问题” 。我放入日志以查看正在下载多少数据。而且看来,从Google驱动器下载的APK的大小几乎不应该是APK的大小。大约5万,而不是4 MB。我在网上看到很多与此有关的问题,但是没有人谈论Google Play无法发送完整文件。为了从Google云端硬盘下载完整的APK,我缺少什么吗?这是代码,
private void downloadApk(){
// checkVersion();
String extStorageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
File folder = new File(extStorageDirectory);
folder.mkdirs();
File file = new File(folder, "app-debug.apk");
try {
file.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
DownloadApkTask downloadApkTask = new DownloadApkTask(APKURL,file);
downloadApkTask.execute();
}
public class DownloadApkTask extends AsyncTask<String, Void, Void> {
String fileURL;
File directory;
public DownloadApkTask(String fileURL,File directory) {
this.fileURL = fileURL;
this.directory = directory;
}
@Override
protected Void doInBackground(String... params) {
Log.v("DO in Back started","Started");
try {
FileOutputStream f = new FileOutputStream(directory);
URL u = new URL(fileURL);
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.connect();
InputStream in = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = in.read(buffer)) > 0) {
Log.v("PROGREsS", String.valueOf(len1));
f.write(buffer, 0, len1);
}
f.close();
directory.setReadable(true,false);
} catch (Exception e) {
System.out.println("exception in DownloadFile: --------"+e.toString());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void stringReturn) {
super.onPostExecute(stringReturn);
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/app-debug.apk");
Log.v("STARTING INSTALLATION","-----");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
}
}
答案 0 :(得分:0)
基于此page,在安装应用时发生解析错误。
当您尝试安装应用程序时,突然弹出一个窗口,提示“解析程序包时出现问题” ,这意味着由于 apk解析器,无法安装该应用程序>,即正在解决问题。
发生此解析错误的原因有多种,肯定是您解析错误的原因之一:
- 文件可能未完全下载。
- 该应用程序可能不适合您的硬件或操作系统版本。
- 由于安全问题设置
- APK文件损坏。
请按照以下显示的步骤解决移动设备上的android解析错误:
检查显示的应用apk文件。
- 将
Andriomanifest.xml
文件更改为其默认设置,并检查该文件的名称。如果文件的原始名称为“ aap.apk”,并且将其重命名为“ app1.apk”,则也可能导致错误。如果您有一些编码知识,那么如果编码有问题,请查看应用程序代码。安全设置。
- 出于安全目的,手机具有内置设置,不允许安装来自第三方供应商的应用程序,而不是Play商店提供的移动应用程序。请勿从不受信任的网站上安装应用。这可能确实会给您的手机带来风险。
启用USB调试。
- 转到设置>>向下滚动,最后,您将看到“关于设备”选项。
- 寻找选项“内部版本号”。
- 点击“内部版本号” 7次。
- 您将看到一条消息“您现在是开发人员。”
- 启用后返回设置
- 选择“开发人员选项”。
- 勾选“ USB调试”。
应用程序文件已损坏。
- 解析错误也可能是由于文件损坏引起的。在这种情况下,请下载新的但完整的APK文件,然后重试以重新安装。这可能对您有帮助。
禁用防病毒。
- 如果您已安装了防病毒和清理程序等应用程序,则这也可能会阻止某些应用程序的安装。这种预防是出于手机的安全目的。它们阻止了从不受信任的站点进行的可疑下载。如果您确实要安装该应用程序,请暂时禁用防病毒软件。
清除Play商店的缓存Cookie。
- 打开Google Play商店
- 选择侧边栏并选择选项“设置”。
- 在常规设置中,您会发现“清除本地搜索历史记录”。