2017-08-21 90 views
0

我想打開手機的瀏覽器以顯示我的html字符串。 現在我的代碼是:如何使用html字符串在android中打開瀏覽器

Uri uri = Uri.parse(htmlString); 
Intent browserIntent = new Intent(Intent.ACTION_VIEW); 
browserIntent.setDataAndType(uri, "text/html"); 
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE); 
startActivity(browserIntent); 

但它滿足了一個錯誤:

android.content.ActivityNotFoundException:無活動處理意向{行動= android.intent.action.VIEW貓= [ android.intent.category.BROWSABLE] dat = ...

其中dat是我的html字符串。

那麼我該如何正確打開瀏覽器呢?

謝謝。

+0

https://stackoverflow.com/a/45785084/2979171使用Chrome標籤 – lvl4fi4

回答

0
Uri uri = Uri.parse(htmlString); 

HTML不是Uri

So how can I correctly open the browser?

第1步:寫HTML到一個文件上internal storage(例如,getCacheDir()

第2步:設置FileProvider從您在步驟#使用的目錄服務文件1

第3步:使用FileProvider.getUriForFile()得到您的File一個Uri您在步驟#1使用

第四步:使用UriIntent,呼籲startActivity()

+0

謝謝你的答案之前還加入FLAG_GRANT_READ_URI_PERMISSIONIntent。我試過這種方式,但是當我打開瀏覽器時,它打開了我的存儲路徑而不是html文件的url。我的代碼是:Uri uri = FileProvider.getUriForFile(this,「myprovideranth」,file); 意圖browserIntent = new Intent(Intent.ACTION_VIEW); browserIntent.setDataAndType(uri,「text/html」); browserIntent.addCategory(Intent.CATEGORY_BROWSABLE); this.grantUriPermission( 「MYPROVIDER」,URI,Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(browserIntent); –

+0

@ WeihengLian:「它打開的URL是我的存儲路徑,而不是HTML文件」是什麼意思?除了'CATEGORY_BROWSABLE'(這裏不應該需要AFAIK),你看起來很好。請注意,並非所有的Web瀏覽器都會支持你的'Uri'所具有的'content'方案。 Android的期望是你可以在你的應用中使用'WebView'來查看這些內容,而不是嘗試將它加載到第三方Web瀏覽器中 - Android不能很好地處理你的場景。 – CommonsWare

+0

我的意思是當我打開瀏覽器時,它告訴我它無法解析url。我發現這個「url」是我的html文件的存儲路徑。現在我正在做一些關於api auth的東西,所以我不能使用webview。 –

相關問題