所以我正在下载东西,它被放入内置的下载应用程序,因为这就是下载管理器的工作原理。我只想让用户点击一个打开内置下载应用程序的按钮。 继承人我的尝试:
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);
答案 0 :(得分:6)
使用DownloadManager.ACTION_VIEW_DOWNLOADS常量:
startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
答案 1 :(得分: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);