我在Android下载二进制文件问题 并在Android上以编程方式安装应用程序的帮助下做到了这一点 。
我想立即进行自动更新和自动安装。它是本地的,因此是非市场应用程序。
这是我的代码:
public void Update(String apkurl){ try { URL url = new URL(apkurl); HttpURLConnection c = (HttpURLConnection) url.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); String PATH = Environment.getExternalStorageDirectory() + "/download/"; File file = new File(PATH); file.mkdirs(); File outputFile = new File(file, "app.apk"); FileOutputStream fos = new FileOutputStream(outputFile); InputStream is = c.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = is.read(buffer)) != -1) { fos.write(buffer, 0, len1); } fos.close(); is.close();//till here, it works fine - .apk is download to my sdcard in download file Intent promptInstall = new Intent(Intent.ACTION_VIEW) .setData(Uri.parse(PATH+"app.apk")) .setType("application/android.com.app"); startActivity(promptInstall);//installation is not working } catch (IOException e) { Toast.makeText(getApplicationContext(), "Update error!", Toast.LENGTH_LONG).show(); } }
我的权限是INTERNET,WRITE_EXTERNAL_STORAGE,INSTALL_PACKAGES,和DELETE_PACKAGES。
promptInstall加载Intent后,应用程序崩溃= /
那么,我是缺少权限还是代码不正确,或者有更好的方法来执行此操作?