在自己的网站上托管.apk文件

时间:2011-06-02 06:57:01

标签: android url apk

我要求在除android市场或任何其他应用商店之外的一个公共网站上托管我的.apk文件。在Android市场中,在注册到市场后,下载的.apk将自动安装在移动设备上而无需任何手动操作。因此,我愿意创建一个URL并将.apk文件托管到该文件中,并希望将.apk下载到android手机中,并且必须自动安装。

我怎么能这样做....如果有任何代码或链接重新分配这个,请分享。

2 个答案:

答案 0 :(得分:5)

如果Android设备已选中设置 - >应用程序 - >未知来源,Android将允许安装.apk。如果没有检查 - 你就不会成功。

假设选中了复选栏并且您已下载.apk文件。您可以运行下一个代码来触发安装:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(apkFileName));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);

答案 1 :(得分:2)

{
        String url = "http://www.server.com/yourapp.apk";
        String PATH = Environment.getExternalStorageDirectory() + "/download/";
        File file = new File(PATH);
        file.mkdirs();
        File outputFile = new File(file, "yourapp.apk");
        downloadFile(url, outputFile);
        installApp(context);
}



private static void downloadFile(String url, File outputFile) {
    try {
        URL u = new URL(url);
        URLConnection conn = u.openConnection();
        int contentLength = conn.getContentLength();

        DataInputStream stream = new DataInputStream(u.openStream());

        byte[] buffer = new byte[contentLength];
        stream.readFully(buffer);
        stream.close();

        DataOutputStream fos = new DataOutputStream(new FileOutputStream(outputFile));
        fos.write(buffer);
        fos.flush();
        fos.close();
    } catch (FileNotFoundException e) {
        Log.e("FileNotFoundException",e+"");
        return; 
    } catch (IOException e) {
        Log.e("IOException",e+"");
        return; 
    }
}


private static void installApp(Context mycontext) {
    Intent installer = new Intent();
    installer.setAction(android.content.Intent.ACTION_VIEW);
    String PATH = "file://" + Environment.getExternalStorageDirectory() + "/download/yourapp.apk";
    installer.setDataAndType(Uri.parse(PATH), "application/vnd.android.package-archive");
    mycontext.startActivity(installer);
}