如何在文件下载完成后自动安装APK(托管在私有)

时间:2011-09-16 02:57:19

标签: android installation download

我是Android新手,我过去两天一直在搜索网页。我发现以下链接,但我没有得到如何以及在何处实现此代码以在完全下载后开始自动安装apk文件以及如何在安装后删除下载的apk文件。请指导我正确的方式帮助我。

how to install apk file programmatically

Invoking activity from APK in another android application

Android install apk programmatically

Install APK programmatically on android

http://www.anddev.org/viewtopic.php?p=23928

编辑:

我在清单文件中写了这段代码:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <!-- <uses-permission android:name="android.permission.INSTALL_PACKAGES"/> -->
    <application android:icon="@drawable/biz_logo"
        android:permission="android.permission.WRITE_CONTACTS">
        <activity android:name="com.biz.mlm.Main">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="content" />
                <data android:scheme="file" />
                <data android:mimeType="application/vnd.android.package-archive" />
            </intent-filter>
        </activity>

5 个答案:

答案 0 :(得分:11)

不可能。正如其中一些链接指出的那样,制作一个自动安装并删除原始安装程序而无需任何进一步用户干预的APK称为恶意软件。

如果用户授予相关权限,您可以编写一个下载并安装任意APK的程序,但我还没有看到一个好的实现或文档。通常,您可以使用以下代码调用默认系统安装程序:

File apkFile = new File({path to APK});
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
    startActivity(intent);

答案 1 :(得分:3)

您是否尝试过添加以下权限?

<uses-permission
    android:name="android.permission.INSTALL_PACKAGES" />

将以上代码添加到清单中(特别是在获得安全性异常时)。

您可以参考Install apps silently, with granted INSTALL_PACKAGES permission

希望这适合你。

答案 2 :(得分:2)

Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File("/mnt/sdcard/myapkfile.apk");
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);

上面的代码将安装myapkfile.apk。您只需将此代码放在Activity的onCreate()中即可。

答案 3 :(得分:1)

实际上这是可能的,使用BroadcastReceiver监听系统中添加包(PACKAGE_ADDED)的时间。创建BroadcastReceiver类,执行以下代码:

public void onReceive(Context arg0, Intent arg1) {
    File downLoadApk = new File(Environment.getExternalStorageDirectory(),"New.apk");
        if (downLoadApk.exists()) {
            downLoadApk.delete();
        }

}

答案 4 :(得分:0)

下载后提供apk文件的路径,它将自动安装在android

Intent intent1 = new Intent(Intent.ACTION_INSTALL_PACKAGE);             intent1.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);             intent1.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory()+“ / download /” + filename)),“ application / vnd.android.package-archive”);             intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);