春衣少年当酒歌,起舞四顾以笑和。这篇文章主要讲述下载完成后如何显示app选择器相关的知识,希望能为你提供帮助。
下载完成后,应用选择器打开,根据下载文件的文件扩展名显示某个应用程序,或者打开一个应用程序,当用户点击快餐栏中的打开时,该应用程序被选为该文件扩展名的默认应用程序。
我尝试实现这样的事情:
文章图片
对于pdf文件,它显示了这样的东西
文章图片
对于图像,它显示了这样的东西
我的守则
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
int last_index = url.lastIndexOf("/");
subPath[0] = url.substring(last_index, url.length());
//downloads file nameDownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
//Notify client once download is completed!
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, subPath[0]);
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
if (dm != null) {
dm.enqueue(request);
}
showSnackBar(MainTab.this,"Downloading file", false);
}
});
BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
showSnackBar(MainTab.this,"Downloading finished", true);
}
};
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
public void showSnackBar(Activity activity, String message, boolean bool){
View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
Snackbar snackbar = Snackbar.make(rootView, message, Snackbar.LENGTH_LONG);
if(bool){
snackbar.setAction(R.string.open, new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Downloaded File open", Toast.LENGTH_LONG).show();
Intent baseIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(subPath[0]));
Intent chooserIntent = Intent.createChooser(baseIntent, "Open with");
if (baseIntent.resolveActivity(getPackageManager()) != null) {
startActivity(chooserIntent);
}}
});
}
snackbar.show();
}
清单文件:
<
uses-permission android:name="android.permission.INTERNET" />
<
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<
application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<
activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize">
<
intent-filter>
<
action android:name="android.intent.action.MAIN" />
<
category android:name="android.intent.category.LAUNCHER" />
<
/intent-filter>
<
intent-filter>
<
action android:name="android.intent.action.VIEW" />
<
category android:name="android.intent.category.BROWSABLE" />
<
data android:mimeType="text/html"/>
<
data android:mimeType="text/pdf"/>
<
data android:mimeType="audio/*"/>
<
data android:mimeType="video/*"/>
<
data android:mimeType="image/*"/>
<
data android:scheme="http" />
<
data android:scheme="https" />
<
/intent-filter>
<
/activity>
<
/application>
请帮我解决一下。提前致谢。
编辑:
修改后的代码根据@Reaz Murshed
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Downloaded File open", Toast.LENGTH_LONG).show();
String extension = MimeTypeMap.getFileExtensionFromUrl(new File(subPath[0]).getPath());
String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(subPath[0])), type);
getApplicationContext().startActivity( intent );
}
【下载完成后如何显示app选择器】logcat的:
02-10 16:47:38.966 16467-16467/? I/art: Not late-enabling -Xcheck:jni (already on)
02-10 16:47:39.023 16467-16473/? I/art: Debugger is no longer active
02-10 16:47:39.034 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_dependencies_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_dependencies_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.208 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_0_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_0_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.240 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_1_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_1_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.260 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_2_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_2_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.279 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_3_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_3_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.300 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_4_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_4_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.338 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_5_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_5_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.362 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_6_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_6_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.392 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_7_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_7_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.413 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_8_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_8_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.432 16467-16467/? W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg--debuggable --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/app/biz.coolpage.aashish.browser-1/split_lib_slice_9_apk.apk --oat-file=/data/dalvik-cache/x86/data@app@biz.coolpage.aashish.browser-1@split_lib_slice_9_apk.apk@classes.dex) because non-0 exit status
02-10 16:47:39.434 16467-16467/? W/System: ClassLoader referenced unknown path: /data/app/biz.coolpage.aashish.browser-1/lib/x86
02-10 16:47:39.439 16467-16467/? I/InstantRun: starting instant run server: is main process
02-10 16:47:39.524 16467-16467/? W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
02-10 16:47:39.700 16467-16505/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true[ 02-10 16:47:39.702 16467:16467 D/]
HostConnection::get() New Host Connection established 0xaa95e200, tid 16467[ 02-10 16:47:39.734 16467:16505 D/]
HostConnection::get() New Host Connection established 0xaa95e800, tid 16505
02-10 16:47:39.737 16467-16505/? I/OpenGLRenderer: Initialized EGL, version 1.4
02-10 16:47:39.737 16467-16505/? W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
02-10 16:47:39.747 16467-16505/? D/EGL_emulation: eglCreateContext: 0xaa960360: maj 3 min 1 rcv 4
02-10 16:47:39.753 16467-16505/? D/EGL_emulation: eglMakeCurrent: 0xaa960360: ver 3 1 (tinfo 0xaa94ee60)
推荐阅读
- 如何在Android上使用HTML5应用启用全屏YouTube视频()
- 用户按下后退按钮后检查互联网连接。(Android的警报框)
- 如何拍照,保存并在Android中获取照片
- 为什么Grails(在Tomcat中)记录到catalina.out和我的自定义文件appender()
- 使用Google Apps脚本删除Google表格中的行
- 仅在Google Apps脚本中是新文件时才解压缩文件
- Android 禁止截屏录屏 — 解决PopupWindow无法禁止录屏问题
- Android DSelectorBryant 单选滚动选择器
- 熟悉Android打包编译的流程