如何安装更新的APK

时间:2018-10-05 13:52:00

标签: android apk auto-update

我们有一个仅在公司内部使用的应用程序。目前,我们使用所示代码执行应用程序更新。这将访问服务器上具有两个逗号分隔数字的文件。第一个是可用的最新版本的当前versionCode,第二个是允许用户操作的最早的versionCode。如果他们使用的版本过旧,则必须更新或关闭该应用程序。

public class UpdateApp extends MainActivity {

    public void check(final Context c) {
        RequestQueue queue = Volley.newRequestQueue(c);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, getText(R.string.ver_uri).toString(),
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        String[] v = response.split(",");
                        if (Integer.parseInt(v[0]) > BuildConfig.VERSION_CODE) {

                            AlertDialog.Builder builder = new AlertDialog.Builder(c);
                            builder.setMessage("An update is available").setTitle(R.string.app_name);
                            builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    // UPDATE button pressed

                                    // url to download APK
                                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getText(R.string.apk_uri).toString());
                                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                    intent.setPackage("com.android.chrome");
                                    try {
                                        c.startActivity(intent);
                                    } catch (ActivityNotFoundException ex) {
                                        // Chrome browser presumably not installed so allow user to choose instead
                                        intent.setPackage(null);
                                        c.startActivity(intent);
                                    }
                                }
                            });
                            if (Integer.parseInt(v[1]) <= BuildConfig.VERSION_CODE) {
                                builder.setNegativeButton("Not Now", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        // NOT NOW button pressed
                                    }
                                });
                            }
                            AlertDialog dialog = builder.create();
                            dialog.show();
                        }
                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(c.getApplicationContext(), "Network error - please try later", Toast.LENGTH_LONG).show();
            }
        });
        stringRequest.setShouldCache(false);
        queue.add(stringRequest);
    }
}

当应用开始使用new UpdateApp().check(this);

时,将调用此更新程序

这工作到一定程度,但是用户仍然必须实际安装新的APK。我正在寻找一种在用户选择下载新APK之后自动安装APK的方法。我知道设备需要允许来自未知来源的安装才能完成。

0 个答案:

没有答案