用html viewer app打开html

时间:2013-11-26 02:43:01

标签: android android-intent

我想用html viewer app打开一个本地html文件 我使用下面的代码来做到这一点:

MimeTypeMap mime = MimeTypeMap.getSingleton();
String mimetype = mime.getMimeTypeFromExtension("html");

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(HTML File), mimetype);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

但这会弹出选择器包含html编辑应用程序 我只想显示html阅读器应用程序 我该怎么做?

2 个答案:

答案 0 :(得分:1)

试试这段代码吧。我们将查询可以打开此mime类型的活动并找到完全正确的htmlviewer应用程序。试试你自己。我没有测试过,所以不确定它是否正常,但这是主要的想法。

MimeTypeMap mime = MimeTypeMap.getSingleton();
String mimetype  = mime.getMimeTypeFromExtension("html");    

Intent htmlIntent = new Intent(Intent.ACTION_VIEW);
htmlIntent.setDataAndType(Uri.fromFile(htmlFile), mimetype);

PackageManager packageManager = getPackageManager();
List<ResolveInfo> canViewActivity = packageManager.queryIntentActivities(htmlIntent, 0);
for (ResolveInfo resolve : canViewActivity) {
    if ((resolve.activityInfo.name).contains("html_viewer_package")) {
        final ActivityInfo htmlActivity = resolve.activityInfo;
        final ComponentName componentName = new ComponentName(htmlActivity.applicationInfo.packageName, htmlActivity.name);
        htmlIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        htmlIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        htmlIntent.setComponent(componentName);
        startActivity(htmlIntent);
        break;
   }
}

答案 1 :(得分:1)

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("package.name.of.destination.app");
                    startActivity(LaunchIntent);

表单中的控件转到该应用程序,因此如果您想要提供一些效果,则必须在目标应用程序中执行此操作