【问题标题】:Apk File download Error using Java in Android在 Android 中使用 Java 下载 Apk 文件时出错
【发布时间】:2014-01-16 10:49:46
【问题描述】:

。我按照本教程进行操作并收到错误“解析错误,解析包有问题”。我已经在 Android 设备三星 Galaxy S3 中检查了结果。

    package com.mrfs.android.surveyapp.activities;

        import java.io.File;
        import java.io.FileOutputStream;
        import java.io.InputStream;
        import java.net.HttpURLConnection;
        import java.net.URL;

        import android.app.Activity;
        import android.content.Context;
        import android.content.Intent;
        import android.net.Uri;
        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.os.Environment;
        import android.util.Log;


        public class ApkFileAsync extends Activity
        {
            UpdateApp updateAppInstance;

        @Override
        public void onCreate(Bundle savedBundleInstance)
        {

        super.onCreate(savedBundleInstance);
        updateAppInstance = new UpdateApp();
        updateAppInstance.setContext(getApplicationContext());
        updateAppInstance.execute("http://demo.ingresssolutions.com/proposalmanagement/services/user/getApkFile");
        }

        private class UpdateApp extends AsyncTask<String,Void,Void>{
        private Context context;
        public void setContext(Context contextf){
            context = contextf;
        }
        @Override
        protected Void doInBackground(String... arg0) {
              try {
                    URL url = new URL(arg0[0]);
                    HttpURLConnection c = (HttpURLConnection) url.openConnection();
                    c.setRequestMethod("POST");
                    c.setDoOutput(true);
                    c.connect();

                    String PATH = "/mnt/sdcard/Download/";
                    File file = new File(PATH);
                    file.mkdirs();
                    File outputFile = new File(file,"surveyapp.apk");
                    if(outputFile.exists()){
                        outputFile.delete();
                    }
                    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();

                  /*  Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(Uri.fromFile(new File("/mnt/sdcard/Download/update.apk")), "application/vnd.android.package-archive");
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);*/ // without this flag android returned a intent error!
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "app.apk")), "application/vnd.android.package-archive");
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);  
                    context.startActivity(intent);


                } catch (Exception e) {
                    Log.e("UpdateAPP", "Update error! " + e.getMessage());
                }
            return null;
 }}  
  }

我在Complete Action using 对话框后尝试按PACKAGE INSTALLERVERIFY AND INSTALL 时收到此错误,在这两种情况下都是相同的错误。

【问题讨论】:

  • 必须检查您的应用程序包名称
  • 一次检查你的清单文件,如包名,应用程序名,并检查你的android包名生成的包名..
  • @Madhu 我是新手,你能详细说明一下我在清单文件中签入的这一行,并检查你的 android 包名生成的包名。
  • 这是清单文件:schemas.android.com/apk/res/android" package="com.mrfs.android. Surveyapp" android:versionCode="1" android:versionName="1.0" >
  • 已添加清单文件的快照

标签: java android android-install-apk


【解决方案1】:

将你的清单更改为喜欢

我认为这应该可以正常工作。如果不起作用,请发布您的教程链接,我错过了..我需要检查它..我会更新答案... 并提及您是如何通过 eclipse 或其他一些过程(如导入 apk)安装应用程序的...如果将 apk 导入真实设备意味着请检查您的设备版本,如果它的 s3 mans 它的 ICS api 级别包括 14 或 15,所以更改那.. 如果它的果冻豆意味着你最多可以使用 18 个

【讨论】:

  • 链接我关注了第二个答案:对于 ICS,我已经实现了您的代码并创建了一个扩展 AsyncTask 的类http://stackoverflow.com/questions/4967669/android-install-apk-programmatically?rq =1
  • k 所以你想以编程方式安装.apk 所以使用该链接的 juro 问题和答案它工作得很好我试过了。stackoverflow.com/questions/4604239/… 你的代码有问题,代码只适用于少数设备。 .这也将包括root权限..所以请按照juros回答..
  • 跟随 JUROS 的回答让我们看看结果
  • hey Erum Hannan 你能把代码发给我这个邮箱吗justdoit1str@gmail.com.. 这样我会检查.. 在发送之前删除你所有的个人物品.. 关于那个应用程序.. 并发送我的示例代码..我认为问题是您的设备需要root权限..所以一旦发送给我我会检查它...
  • 你能告诉我你的 Skype id,以便我可以告诉你项目流程,因为我的项目包含这么多代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
相关资源
最近更新 更多