瀏覽器開發android
A. 安卓瀏覽器開發怎樣被其他APP調用
如果想要對方應用點擊鏈接後直接調用你的瀏覽器打開,那是無法實現的(除非只裝了你這一個瀏覽器)。
首先你應該了解,android中打開activity或者service是通過發送intent去執行的,而intent又有隱性和顯性之分。
只有對方應用創建的是顯性intent並指定了你開發的瀏覽器,那麼才會直接以你的瀏覽器打開網頁,
但這個intent是由發送方決定的,你作為瀏覽器的開發者是無可奈何的。
你能做的只是開發一個broadcastReceiver(廣播接收器),告訴系統你是一個瀏覽器,
那麼當用戶用隱式intent去打開瀏覽器時,你就會作為一個備選瀏覽器供用戶選擇。
B. Android瀏覽器開發中怎麼得到瀏覽器的歷史
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"></uses-permission>
{
String string = null;
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(Uri.parse("content://browser/bookmarks"), new String[]{"url"}, null, null, null);
while (cursor != null && cursor.moveToNext()) {
string = cursor.getString(cursor.getColumnIndex("url"));
Log.d("debug", string == null ? "null":string);
}
C. android開發怎麼調用瀏覽器打開一個鏈接
在安卓代碼中調用瀏覽器來打開相應的網頁,一般有以下幾種方式
調用默認瀏覽器。
其他瀏覽器。
自定義一個簡單的WebView瀏覽器。
【原理】
主要是通過代碼進行調用已有或者未有的瀏覽器進行打開相應的網頁進行瀏覽。
【詳細實現步奏】
一.調用默認瀏覽器
優缺點:部分手機可能連默認的瀏覽器都沒有。
java">Intentintent=newIntent();
//Intentintent=newIntent(Intent.ACTION_VIEW,uri);
intent.setAction("android.intent.action.VIEW");
Uricontent_url=Uri.parse("此處填鏈接");
intent.setData(content_url);
startActivity(intent);
二.其他瀏覽器,制定打開
缺點:必須知道打開的瀏覽器的包名,大部分用戶可能沒有安裝這些瀏覽器
Intentintent=newIntent();
intent.setAction("android.intent.action.VIEW");
Uricontent_url=Uri.parse("此處填鏈接");
intent.setData(content_url);
intent.setClassName("瀏覽器包名","瀏覽器首頁");
startActivity(intent);
三.自定義一個簡單的WebView瀏覽器
優缺點:推薦使用,不必擔心手機上是否有瀏覽器。
mWebView=(WebView)findViewById(R.id.baseweb_webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(newWebViewClient());
WebViewmyWebView=(WebView)findViewById(R.id.webview);
myWebView.loadUrl("xxx.com");
【最後】
每種方法根據個人需要進行選用,沒其他特別因素推薦使用第三種方案。
D. 如何利用Chromium For Android開發Android瀏覽器
應用層次概念圖
layers 每個盒子代表一個概念中的應用層。通常情況下應該有可能通過替換任意一層及其上層組建來生成一個新的瀏覽器。因此,沒有任何層應該與其更高層次有依賴關系。 WebKit的:Safari,Chromium和其他所有基於WebKit的瀏覽器都使用Webkit作為渲染引擎。WebKit Port是WebKit的一部分,處理與具體平台相關的操作,如資源載入和圖形。 Glue: 將WebKit類型轉換成Chromium類型 。這就是我們的「WebKit嵌入層」。這是瀏覽器Chromium和test_shell(允許我們測試WebKit)的基礎。 Renderer/Render Host: 這是Chromium的「多進程嵌入層。」由它代理傳遞跨進程的消息和命令。你可以想像,其他的多進程瀏覽器也可以使用這一層,它對其他的瀏覽器服務沒有依賴。 Tab contents: Chrome的特有層,來表示標簽顯示的內容。它與應用服務綁定, 例如密碼管理器和history系統。本層不應該假設它嵌入在Chromium瀏覽器窗口中(還有其他Chromium組件如」HTML對話框「使用本層)。 瀏覽器:展現瀏覽器窗口,它嵌入了多個TabContentses。 WebKit 我們使用 WebKit這個開源項目來展示網頁。此代碼主要是由Apple編寫的並存放在/third_party/WebKit目錄中。WebKit主要包括兩部分:「WebCore」負責核心布局功能,「JavaScriptCore」用來執行JavaScript。我們只將JavaScriptCore用於測試目的,通常我們使用高性能的V8 JavaScript引擎取代它。我們實際不使用蘋果稱之為「WebKit」的軟體層(譯注:就是WebKit/Source/WebKit目錄下的內容,Webkit/Source目錄下同樣有WebCore和JavaScriptCore目錄),這個軟體層用在如Safari這樣的應用程序中,用來銜接WebCore和OS X。為了方便,我們通常將從Apple獲取的代碼稱作「WebKit」。(譯注,其實只使用了WebCore) The WebKit Port 在最底層,我們有我們的WebKit「Port」。這是我們實現的平台相關的代碼,它用來銜接平台和WebCore。這些文件位於WebKit目錄中,通常在Chromium目錄中或者以Chromium為後綴名。實際上Port的大部分代碼不是和操作系統相關的:你可以把它看成是WebCore的Chromium Port(譯注:用來銜接WebKit和Chromium的)。有些部分,如字體渲染,必須針對每個操作系統平台分別處理。 網路流量是由我們的多進程資源載入系統處理的,而不是由渲染進程直接調用操作系統完成。 圖形使用為Android開發的Skia圖形庫。這是一個跨平台的圖形庫,原生的處理除了文字以外的所有圖形、圖像。Skia位於/third_party/skia。圖形操作的主要入口點是 / WebKit/port/platform/graphics/GraphicsContextSkia中。這個對象表示一個網頁。它處理所有從瀏覽器進程出入的與導航有關的命令。它繼承自RenderWidget,負責提供繪畫和輸入的處理。RenderView通過全局的(對每個渲染進程來說是全局,即每個進程一個)RenderProcess對象與瀏覽器進程通信。 常見問題:RenderView和RenderWidget的有什麼差異?RenderWidget通過實現名為WebWidgetDelegateglue層的抽象介面WebWidgetDelegate映射到一個的WebCore::Widget這基本上是屏幕上的一個窗口,它繪制窗口並接收窗口中的輸入事件。RenderView從RenderWidget繼承,它表示一個標簽或彈出窗口的內容。它處理所有導航命令並完成窗口繪制和響應輸入事件。只有一種情況下如RenderWidget獨立於RenderView存在:網頁上select boxes。它是個有向下箭頭和很多選項的彈出列表。在選擇框必須使用原聲窗口渲染,以便他們能夠在顯示在其他東西之上,並在必要時彈出框架。這些窗口需要繪制並接收輸入,但是他們不是一個單獨的「網頁」(RenderView)。 渲染器中的線程 每個渲染器中運行著兩個線程:渲染線程和主線程。渲染線程是RenderView和其他所有的WebKit代碼運行的線程。當它和瀏覽器之間進行通信時,首先將消息送到主線程,然後主線程再將消息傳遞給瀏覽器進程。只有主線程收到瀏覽器的回復之後渲染才可以繼續進行,這樣可以使我們同步地將消息從渲染器傳遞給瀏覽器。例如,當頁面中的JavaScript請求cookie時,渲染線程將被阻塞,主線程將所有收到的消息放入隊列直到接收到瀏覽器的正確回復。在這期間收到的任何消息都將按照順序發送給渲染線程進行處理。 瀏覽器進程 rendering browser 瀏覽器進程的底層對象 所有和渲染進程之間的通信都通過瀏覽器進程中的I/O線程實現的。它同樣也處理所有的網路通信,這樣可以不阻塞用戶界面。
當主線程初始化RenderProcessHost完畢後(用戶界面運行時),它建立新的渲染進程並新建名為ChanelProxy的IPC對象通過命名管道與之通信。這個對象運行於Browser的I/O線程中,監聽連接到渲染進程的命名管道,並將所有消息轉發到UI線程的RenderProcess對象。ResourceMessageFilter會過濾掉能夠直接執行的I/O處理消息,比如說網路請求。過濾使用ResourceMessageFilter::OnMessageReceived方法。 Ui線程中的RenderProcessHost負責分發所有顯示相關的消息給RenderViewHost(同時它也會處理有限的幾種非顯示相關的消息)。消息的分發在RenderProcessHost::OnMessageReceived函數執行。 瀏覽器進程的高層對象 顯示相關的消息會進入RenderViewHost::OnMessageReceived。大部分消息在這里處理,其他的則被轉發到RenderWidgetHost。渲染進程中有兩個對象對應到RenderView和RenderWidget對象。在Microsoft Windows上,對於每個RenderWigetHost都有一個RenderWidgetHostHWND與之對應,這個類專門負責管理消息事件並繪制原生的HWND。其他系統上也有類似的負責原生輸入和繪圖的對象。 在renderView/Widget對象之上是WebContent對象,大部分的消息都是在這個對象中響應的。WebContents表示一個tab中的內容。它繼承自通用的TabContents對象(還有其他集中TabContents的子類,比如下載頁面或歷史頁面)。它是大部分導航和頂層瀏覽器UI更新的結合點(switching point)。 FAQ:為什麼要分離WebContents和RenderViewHost對象?
原因有二:這兩個對象提供不同層面的功能。
E. 如何利用Chromium For Android開發Android瀏覽器
採用AndroidStudio作為開發環境,從ChromiumforAndroid抽取chrome模塊的源碼,加入Androidproject。native代碼在chromium環境中build,作為so加入Androidproject基礎模塊(base,content,net等)在chromium環境build為jar包,加入Androidprojectcontent,chrome,ui等模塊的資源文件加入Androidlibraryproject資源文件為什麼不能直接都添加到Androidproject呢?因為命名空間的原因,比如content模塊的資源的命名空間為org.chromium.content,chrome模塊的資源的命名空間為org.chromium.chrome,所以需要建立不同的Androidlibraryproject,指定不同的包名。最後整個項目的結構如下:browser|_app||_libs||_src||_main||_aidl||_assets||_java||_jniLibs||_res|_libraries|_androidmedia_res|_chrome_res|_content_res|_datausagechart_res|_ui_res
F. Android開發:用webview做的瀏覽器怎麼用兩個文本框分別顯示當前網頁標題和地址
可以直接在js中調用windows.title來得到當前html界面的標題。
WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />
第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加許可權,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>
G. UC安卓瀏覽器插件開發
UC安卓瀏覽器插件開發:
如圖所示,便是UC的插件面板。 UC通過開放瀏覽器插件api, 使開發者能夠進行插件的開發。
當建立一個android工程後,只有這四個地方需要進行配置。 首先在android工程的配置文件AndroidManifest.xml中,需要加入如下代碼:
<service android:name="com.uc.addon.sdk.remote.AddonService">
<intent-filter>
<action android:name="com.uc.browser.action.Addon"/>
</intent-filter>
</service>
這樣插件才能被瀏覽器識別。
然後分別開發extension和receiver。 (有時根據需求只需其中一個就夠了)
首先是extension, 你的extension類必須繼承於AbstractExtension類,並且override onInvoke()方法 。
public class NewTabDemo extends AbstractExtension {
...
@Override
public void onInvoke(){
}
..
}
onInvoke中的內容就是點擊該extension後觸發的操作。
然後是receiver . 相對的,receiver需要繼承AbstractReceiver 類,並重寫onEvent方法:
public class MyEventReceiver extends AbstractEventReceiver{
...
@Override
public void onEvent(int eventId , EventBase event){
if (eventId == EventIds.EVENT_PAGE_START) {
...
}
}
}
H. 安卓開發怎麼在APP內部調用手機系統瀏覽器打開指定html並獲取HTML的數據
Android開發_如何調用 瀏覽器訪問網頁和Html文件
一、啟動android默認瀏覽器
Intent intent= new Intent();
intent.setAction('android.intent.action.VIEW');
Uri content_url = Uri.parse('http://www.cnblogs.com');
intent.setData(content_url);
startActivity(intent);
這樣子,android就可以調用起手機默認的瀏覽器訪問。
二、指定相應的瀏覽器訪問
1、指定android自帶的瀏覽器訪問
( 「com.android.browser」:packagename ;「com.android.browser.BrowserActivity」:啟動主activity)
Intent intent= new Intent();
intent.setAction('android.intent.action.VIEW');
Uri content_url = Uri.parse('http://www.cnblogs.com');
intent.setData(content_url);
intent.setClassName('com.android.browser','com.android.browser.BrowserActivity');
startActivity(intent);
2、啟動其他瀏覽器(當然該瀏覽器必須安裝在機器上)
只要修改以下相應的packagename 和 主啟動activity即可調用其他瀏覽器
intent.setClassName('com.android.browser','com.android.browser.BrowserActivity');
uc瀏覽器':'com.uc.browser', 'com.uc.browser.ActivityUpdate「
opera :'com.opera.mini.android', 'com.opera.mini.android.Browser'
qq瀏覽器:'com.tencent.mtt', 'com.tencent.mtt.MainActivity'
三、打開本地html文件
打開本地的html文件的時候,一定要指定某個瀏覽器,而不能採用方式一來瀏覽,具體示例代碼如下
Intent intent= new Intent();
intent.setAction('android.intent.action.VIEW');
Uri content_url = Uri.parse('content://com.android.htmlfileprovider/sdcard/help.html');
intent.setData(content_url);
intent.setClassName('com.android.browser','com.android.browser.BrowserActivity');
startActivity(intent);
關鍵點是調用了」content「這個filter。
以前有在win32編程的朋友,可能會覺得用這種形式」file://sccard/help.html「是否可以,可以很肯定的跟你說,默認的瀏覽器設置是沒有對」file「這個進行解析的,如果要讓你的默認android瀏覽器有這個功能需要自己到android源碼修改manifest.xml文件,然後自己編譯瀏覽器代碼生成相應的apk包來重新在機器上安裝。
大體的步驟如下:
1、打開 packages/apps/Browser/AndroidManifest.xml文件把加到相應的後面就可以了
2、重新編譯打包,安裝,這樣子,新的瀏覽器就支持」file「這個形式了
有興趣的可以去試試。
I. android手機上的APP有的是基於瀏覽器開發的嗎
android手機上的APP有的是基於瀏覽器開發的,有的應用是點擊進入之後調用瀏覽器打開指定網頁。
應用程序(外語縮寫:App;外語全稱:Application) 。APP指的是智能手機的第三方應用程序。比較著名的應用商店有蘋果的App Store,谷歌的Google Play Store,安智市場,還有黑莓用戶的BlackBerry App World,微軟的Marketplace等。
網頁瀏覽器是個顯示網站伺服器或文件系統內的文件,並讓用戶與此些文件交互的一種應用軟體。它用來顯示在萬維網或區域網等內的文字、圖像及其他信息。這些文字或圖像,可以是連接其他網址的超鏈接,用戶可迅速及輕易地瀏覽各種信息。大部分網頁為HTML格式,有些網頁需特定瀏覽器才能正確顯示。瀏覽器是最常用的客戶端程序。萬維網是全球最大的鏈接文件網路文庫。
J. 怎麼在電腦網頁瀏覽器上運行Android應用
首先,我們打開谷歌Chrome瀏覽器,在任意網頁按下F12快捷鍵。打開Google瀏覽器開發者工具或者右擊網頁,點擊「審查元素」2如果你用的蘋果Mac電腦,可以按下快捷鍵⌘-Option-I打開Chrome瀏覽器的開發者工具3這時點擊左上角的手機屏幕圖標,即可進入模擬手機設備型號、手機屏幕尺寸,不同手機解析度的功能界面。谷歌瀏覽器瞬間變成了手機瀏覽器。