下载后自动安装apk文件

5

我使用下载管理器API下载了APK文件,但不知道该文件存储在哪里。现在我需要找到这个APK文件并安装它,请给我一些线索。谢谢!


你没有指定位置。 - Prakhar
可能是[Android:以编程方式安装.apk文件的重复问题] (https://dev59.com/fm445IYBdhLWcg3wO31u) - jk2K
3个回答

6

使用以下代码安装apk:

Intent promptInstall = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("file:///path/to/your.apk"))
    .setType("application/vnd.android.package-archive");
startActivity(promptInstall); 

感谢您的回复,Prakhar。 - Uday
嗨,我应该把APK文件放在哪里? - Muhammet Demir

3
为了在下载后自动安装文件,您需要通过广播此消息告知设备在下载后执行此操作:
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

以及对处理程序的操作:

BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {

    long id = intent.getExtras().getLong(DownloadManager.EXTRA_DOWNLOAD_ID);
    DownloadManager dm =(DownloadManager)getSystemService(DOWNLOAD_SERVICE);
    intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.setDataAndType(dm.getUriForDownloadedFile(id),
    dm.getMimeTypeForDownloadedFile(id));
    startActivity(intent);
}
};

@Adb EI-Rahman,我按照您的建议进行了更改,但是我不知道“filename”应该填什么,因为我不知道下载后文件保存在哪里。 - Uday
@Adb EI-Rahman,我按照您给出的代码进行了编写,但是它显示错误:“DownloadManager 类型未定义 getUriForDownloadedFile(long) 方法。” :( - Uday
请确保将此行代码放置在类的顶部:import android.app.DownloadManager; - Sami Eltamawy
@Adb EI-Rahman,是的,我已经添加了所有内容。如果您同意,我会把代码发送给您。 - Uday
这是您目前面临的唯一问题,我认为您可以通过检查您正在使用的SDK或包含库手册或寻找dm.*类似的方法来处理它,以返回相同的输出。如果您发现它有用,请投票支持答案。 - Sami Eltamawy

0

@Uday,@Adb El-Rahman的代码是有效的。当您初始化下载时,需要设置目标URI。

String sAndroidUrl = "http://somesite.com/Install.apk";

dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse(sAndroidUrl));
String sDest = "file://" + android.os.Environment.getExternalStorageDirectory().toString() + "/Download/Install.apk";
request.setDestinationUri(Uri.parse(sDest));
enqueue = dm.enqueue(request);  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接