3

这会有点长,但希望其他人也能从这个线程中受益。

我打算为相当多的人做一个私人申请。它不会出现在 google play 上。因此,我现在面临一些问题:如何下载新版本以及如何重新安装?

我已经阅读了一些关于使用另一个应用程序安装和卸载应用程序的精彩网站,例如: http ://android.amberfog.com/?p=98

还有一些关于从在线下载应用程序: 使用 Android 下载文件,并在 ProgressDialog 中显示进度

甚至这个:

(私有)Android 应用程序的自动更新

但我无法弄清楚如何做我想做的事。我想创建一个可以自动更新的应用程序。我的计划,通过一遍又一遍的研究,是有 2 个应用程序。主要的需要更新,而第二个总是在那里。每次打开主应用程序时,都会调用第二个应用程序并执行检查,如有必要,卸载主应用程序。然后,它继续将新版本的主应用程序下载到手机上,并安装它。

以下是我陷入的下载过程的一些代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(
            "http://dl.dropboxusercontent.com/u/98196898/data.json");
    try{
        HttpResponse response = client.execute(httpGet);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if(statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new 
                    InputStreamReader (content));
            String line;
            while((line = reader.readLine()) != null) {
                builder.append(line);
            }
        } 

    }catch (Exception e)
    {
        e.printStackTrace();
    }
    TextView tv = (TextView)findViewById(R.id.showresponse);
    tv.setText(builder.toString());
    try{
        String answer = "";
        JSONArray jsonArray = new JSONArray(builder.toString());
        for(int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            answer += jsonObject.getString("VersionNumber");
        }
        tv.setText(answer);

哪个,不起作用。我不知道为什么。我的 .json 是用记事本制作的,内容如下:

{
"VersionNumber": "2"
"VersionCode": "2.0"
}

我的计划是将版本号与旧版本号进行比较--> 显然,如果在线版本号大于需要更新的版本号。

而且,当然,它不起作用。我也尝试过使用defaulthttpclientandhttpget和东西,但它不起作用。也许Dropbox有这个问题?

接下来,我意识到我在浪费时间,所以我继续安装 apk 假设有一天我会弄清楚如何从网上下载东西。我试过了,它也不起作用。以下是代码和问题:

String fileName = Environment.getExternalStorageDirectory()
                + "/Android/CheckWebForUpdate.apk";
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
        startActivity(intent);

我在网上复制了大部分,但它不起作用。提示:“解析包有问题”。我看到了两种解决这个问题的方法,但都没有奏效。我回顾了一下,我的代码应该可以工作。有人提到我不应该有相同的名字,所以我尝试了另一个程序的名字,当然,它不起作用。然后,我再次抬头,这一次我发现我“可能”需要许可android.permission.INSTALL_PACKAGES,但后来我发现我需要 root 我的手机(因为该应用程序不只是为我准备的......我需要 root 很多手机,这只是没有意义) - 它仅适用于系统应用程序。

我以两种方式被困在这里。感谢您的阅读。如果您知道如何解决这些问题,请回复。

4

0 回答 0