2

因此,我正在下载内容并将其放入内置下载应用程序中,因为下载管理器就是这样工作的。我只想让用户单击一个打开内置下载应用程序的按钮。这是我的尝试:

btnDownloads.setOnClickListener(new Button.OnClickListener(){
    public void onClick(View v) {
        PackageManager pakMan=MainActivity.context.getPackageManager();
        Log.d("bebr", "Making pak");
        if(pakMan!=null){
            Intent downloadsIntent=new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.downloads","com.android.downlods.Downloads"));
            ResolveInfo resolved=pakMan.resolveActivity(downloadsIntent, PackageManager.MATCH_DEFAULT_ONLY);
            Log.d("bebr","Resolving");
            if(resolved!=null){
                Log.d("bebr", "Starting");
                startActivity(downloadsIntent);
            }
        }
    }
});

好的,终于设法得到了解决方案:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity(LaunchIntent);
4

2 回答 2

6

使用DownloadManager.ACTION_VIEW_DOWNLOADS常量:

startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
于 2014-01-07T01:55:42.997 回答
0

您必须知道包名称才能启动下载应用程序。我不确定它在每台设备上是否都相同(尽管可能如此)。您可以通过查看 Logcat 并启动它来找到它,您应该会在日志中看到包含包名称的某些行。

但是,您可以完全跳过下载应用程序并直接启动包安装程序(当用户在下载应用程序中选择您的 apk 时会发生这种情况)

只需在以下代码段中填写文件的路径:

File appFile = new File("/path/to/your/file.apk");
Uri packageURI = Uri.parse("file:/"+ appFile.getAbsolutePath());
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(Uri.fromFile(appFile),"application/vnd.android.package-archive");
startActivity(installIntent);
于 2012-07-05T03:46:44.797 回答