当前位置:首页 » 安卓系统 » 浏览器开发android

浏览器开发android

发布时间: 2022-11-18 08:21:23

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开发怎么调用浏览器打开一个链接

在安卓代码中调用浏览器来打开相应的网页,一般有以下几种方式

  1. 调用默认浏览器。

  2. 其他浏览器。

  3. 自定义一个简单的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这时点击左上角的手机屏幕图标,即可进入模拟手机设备型号、手机屏幕尺寸,不同手机分辨率的功能界面。谷歌浏览器瞬间变成了手机浏览器。

热点内容
ftp有cd命令吗 发布:2025-03-05 04:47:20 浏览:574
云服务器比物理机的优势 发布:2025-03-05 04:46:05 浏览:466
俺妈密码是什么 发布:2025-03-05 04:40:46 浏览:158
yacclex编译器 发布:2025-03-05 04:35:37 浏览:151
安卓相片怎么转另一个手机 发布:2025-03-05 04:23:40 浏览:544
解压要素 发布:2025-03-05 04:16:05 浏览:790
观致网络模块怎么接入安卓车机 发布:2025-03-05 03:53:40 浏览:461
安卓如何被冥龙锁定后免伤 发布:2025-03-05 03:49:13 浏览:968
标准sql语言 发布:2025-03-05 03:42:51 浏览:302
数据库的访问方式 发布:2025-03-05 03:38:13 浏览:577