使用其他应用自动更新/安装应用

时间:2013-06-27 09:04:12

标签: android json android-intent install auto-update

这将有点长,但希望其他人也会受益于这个主题。

我打算为很多人制作私人申请。它不会出现在Google Play上。因此,我现在面临一些问题:如何下载新版本以及如何重新安装?

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

以及一些关于从网上下载应用的信息: Download a file with Android, and showing the progress in a ProgressDialog

甚至这个:

Auto-Update for (private) Android apps

但我无法弄清楚如何做我想做的事。我想创建一个可以自动更新的应用程序。我的计划,从一次又一次的研究,是有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"
}

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

当然,它不起作用。我也试过使用defaulthttpclienthttpget和东西,但它不起作用。也许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但后来我发现我需要根我的手机(并且因为该应用程序不仅仅适合我...我需要根植很多手机,这听起来没有意义) - 它只适用于系统应用。

我被困在两个方面。谢谢你的阅读。如果您知道如何解决这些问题,请回复。

0 个答案:

没有答案