2013-11-26 36 views
0

我想用html查看器應用程序打開本地html文件。
我用下面的代碼來做到這一點:用html查看器應用程序打開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閱讀器應用程序。
我該怎麼做?

+0

嘗試做「text/html的」在setdataandtype方法第二個參數 –

+0

mimetype與「text/html」相同。 – brian

+0

您是否安裝了html查看器應用程序? –

回答

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; 
    } 
} 
+0

但是這種方法需要所有htmlviewer的應用程序名稱和包名稱的映射表,並按表過濾? – brian

+0

是的。我認爲沒有太多的HTML瀏覽器應用程序。而默認的HTML查看器應用程序將具有特定的包。 – khaintt

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

形式存在時進入該應用程序,所以如果你想給一些效果,你必須這樣做,在目標應用

相關問題