cordova 页面跳转如何实现页面的原生跳转

Sina Visitor System输入关键字或相关内容进行搜索
您好!请问一下,iOS,nativeJS中有没有像安卓中的mainActivity = plus.android.runtimeMainActivity();
我想要获取当前的viewController。
赞助DCloud可免广告,
试试这个。
楼主解决了吗?同求
H5+SDK不是基于viewcontoller在初始化h5+SDK后可以直接把H5 rootview加到自己的viewcontoller中自己控制显示隐藏即可,大家也可以在章节中添加评论,以便有针对性的提供demo@DCloud_HB_骁骑
要回复问题请先或
浏览: 8893
赞助DCloud可免广告,
赞助DCloud可免广告,Cordova调用Activity - 陈达辉 - 博客园
键盘上的生活
posts - 353, comments - 27, trackbacks - 4, articles - 5
首先需要编写一个CallActivityPlugin插件,专门调用Activity
Java代码&&
package&com.example.&&
import&org.apache.cordova.api.CallbackC&&
import&org.apache.cordova.api.CordovaP&&
import&org.apache.cordova.api.PluginR&&
import&org.json.JSONA&&
import&org.json.JSONE&&
import&android.app.A&&
import&android.content.I&&
import&android.os.B&&
import&android.util.L&&
public&class&CallActivityPlugin&extends&CordovaPlugin&{&&
&&&&public&static&final&String&ACTION&=&"call";&&
&&&&@Override&&
&&&&public&boolean&execute(String&action,&JSONArray&args,&CallbackContext&callbackContext)&throws&JSONException&{&&
&&&&&&&&if&(action.equals(ACTION))&{&&
&&&&&&&&&&&&try&{&&&&
&&&&&&&&&&&&&&&&&&
Intent&intent&=&new&Intent().setClass(cordova.getActivity(),&Class.forName(args.getString(0)));&&
&&&&&&&&&&&&&&&&this.cordova.startActivityForResult(this,&intent,&1);&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&PluginResult&mPlugin&=&new&PluginResult(PluginResult.Status.NO_RESULT);&&
&&&&&&&&&&&&&&&&mPlugin.setKeepCallback(true);&&
&&&&&&&&&&&&&&&&callbackContext.sendPluginResult(mPlugin);&&
&&&&&&&&&&&&&&&&callbackContext.success("success");&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}&catch&(Exception&e)&{&&&&
&&&&&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&&&&&&&&&return&false;&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&return&true;&&
&&&&@Override&&
&&&&public&void&onActivityResult(int&requestCode,&int&resultCode,&Intent&intent){&&&&
&&&&&&&&switch&(resultCode)&{&&&
&&&&&&&&&&&&case&Activity.RESULT_OK:&&
&&&&&&&&&&&&&&&&Bundle&b=intent.getExtras();&&&&
&&&&&&&&&&&&&&&&String&str=b.getString("change01");&&
&&&&&&&&&&&&&&&&break;&&
&&&&&&&&&&&&default:&&
&&&&&&&&&&&&&&&break;&&
&&&&&&&&}&&
&然后配置CallActivityPlugin插件res/xml/config.xml
&name="CallActivityPlugin"&value="com.example.plugin.CallActivityPlugin"&&
接着利用js调用插件(callActivity.js)
window.callActivityPlugin&=&function(str,callback)&{&&
&&&&cordova.exec(callback,&pluginFailed,&"CallActivityPlugin",&"call",&[&str&]);&&
var&pluginFailed&=&function(message)&{&&
&&&&alert("failed&&"&+&message);&&
$(function()&{&&
&&&&init();&&
var&init&=&function()&{&&
&&&&console.log("phonegap&init!!");&&
&&&&document.addEventListener("deviceready",&onDeviceReady,&true);&&
var&onDeviceReady&=&function()&{&&
&&&&console.log("deviceready&event&fired");&&
&&&&window.callActivityPlugin("com.example.activity.MyActivity"&,&function(echoValue)&{&&
&&&&&&&&console.log("callActivityPlugin&echo&&");&&
最后html页面加载(相对简单)
Html代码&&
&!DOCTYPE&html&&
&&&&Device&Properties&Example&&
&http-equiv="Content-Type"&content="text/&charset=utf-8"&&
&&&&&type="text/javascript"&charset="utf-8"&src="../js/jquery-1.8.3.js"&&
&&&&&type="text/javascript"&charset="utf-8"&src="../js/cordova-2.3.0.js"&&
&&&&&type="text/javascript"&charset="UTF-8"&src="../js/callActivity.js"&&
&&&&&id="callActivityPlugin"callActivityPlugin&&
&&&&&href="../index.html"返回&&
新的Activity代码(相对简单)
Java代码&&
package&com.example.&&
import&android.app.A&&
import&android.content.C&&
import&android.content.I&&
import&android.net.U&&
import&android.os.B&&
import&android.util.L&&
import&android.view.V&&
import&android.view.View.OnClickL&&
import&android.widget.B&&
import&com.example.ask.R;&&
public&class&MyActivity&extends&Activity&{&&
&&&&private&Button&&&
&&&&private&int&flag&=&0;&&
&&&&private&Intent&intentNew&=&null;&&
&&&&private&Context&context&=&this;&&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&setContentView(R.layout.my_activity_main);&&
&&&&&&&&intentNew&=&this.getIntent();&&
&&&&&&&&btn&=&(Button)&findViewById(R.id.button1);&&
&&&&&&&&btn.setOnClickListener(new&OnClickListener()&{&&
&&&&&&&&&&&&public&void&onClick(View&v)&{&&
&&&&&&&&&&&&&&&&Intent&mIntent&=&new&Intent();&&&&
&&&&&&&&&&&&&&&&mIntent.putExtra("change01",&"1000");&&&&
&&&&&&&&&&&&&&&&mIntent.putExtra("change02",&"2000");&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&setResult(RESULT_OK,&mIntent);&&
&&&&&&&&&&&&&&&&finish();&&
&&&&&&&&&&&&}&&
&&&&&&&&});&&Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
在一个大的项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5实现的页面,可以适配手机。但是这些网页中有好多链接,但是这些链接有些内容有是我们客户端已经实现的,比如有一个注册链接,其实客户端也实现了注册功能,我们不想再继续跳转到网页注册,而是打开客户端某个注册Activity,可以通过以下方式来实现:
xml 文件,如下:
java代码如下:
* 通用的webview,只需要传入2个参数即可, param1:title 标题 param2:url 网站
public class PublicWebView extends Activity {
private WebV
private ImageB
private LinearLayout public_webview_
private boolean showT
private ProgressBar progressB
@SuppressLint(scriptInterface)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.public_webview);
Intent intent = getIntent();
String url = intent.getStringExtra(url);
String title = intent.getStringExtra(title);
showTitle = intent.getBooleanExtra(show_title, true);
public_webview_top = (LinearLayout) findViewById(R.id.public_webview_top);
if (showTitle) {
public_webview_top.setVisibility(View.VISIBLE);
public_webview_top.setVisibility(View.GONE);
TextView titletv = (TextView) findViewById(R.id.public_webview_title);
titletv.setText(title);
progressBar = (ProgressBar) findViewById(R.id.public_webview_progressbar);
webview = (WebView) findViewById(R.id.public_webview_webview);
// 加载需要显示的网页
webview.addJavascriptInterface(new JavascriptInterface(PublicWebView.this), Phoenix_Android);
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
// 设置WebView属性,能够执行Javascript脚本
webview.getSettings().setEnabled(true);
// 加载需要显示的网页
webview.loadUrl(url);
// 设置Web视图
webview.setWebViewClient(new MyWebViewClient());
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
super.onProgressChanged(view, newProgress);
back = (ImageButton) findViewById(R.id.public_webview_back);
back.setOnClickListener(new BackListener(PublicWebView.this, null, 1));
@SuppressLint(NewApi)
public class JavascriptInterface {
@SuppressWarnings(unused)
public JavascriptInterface(Context context) {
this.context =
public void back(String module, int status, String place) {
reFreshBlance();
if (status == -1) { // 用户取消了
} else if (status == 0) {
Toast.makeText(PublicWebView.this, 充值请求失败,请稍后重试..., Toast.LENGTH_SHORT).show();
} else if (status == 1) {
// 充值请求成功
reFreshBlance();
// 1.用户中心进来的有两个参数
// a.bet参数是返回购彩界面
// b.userCenter返回用户中心
// 监听 所有点击的链接,如果拦截到我们需要的,就跳转到相对应的页面。
private class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println(----------------------shouldOverrideUrlLoading 。。 url: + url);
if (url != null && url.contains(/m/phoneRegiste.do)) {
Intent intent = new Intent(PublicWebView.this, RegisterByPhone.class);
PublicWebView.this.startActivity(intent);
return super.shouldOverrideUrlLoading(view, url);
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
// webview.goBack();// 返回前一个页面
return super.onKeyDown(keyCode, event);Android混合开发之Activity类与html页面之间的相互跳转 - 推酷
Android混合开发之Activity类与html页面之间的相互跳转
在底部有本程序源码下载
本程序流程
:程序启动--&testActivity---&phonegap2框架类---&index.html---&testActivity,主要实现activity与html页面的相互跳转,并实现 传递参数的功能。
程序结构图:
1.创建一个安卓项目,在该项目里面添加PhoneGap框架(具体步骤请
),我们知道我们在定义一个主界面的时候往往用的是Activity,这里我们先定义一个TestActivity,程
序代码如下:
package com.
import android.app.A
import android.content.I
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.EditT
import android.widget.TextV
public class TestActivity extends Activity {
private EditT
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edittext = (EditText) findViewById(R.id.EditText1);
button = (Button)findViewById(R.id.Button1);
// 接收html页面参数
String str = getIntent().getStringExtra(&name&);
String str1 = getIntent().getStringExtra(&name&);
//将编辑框文本内容设置接收值
edittext.setText(str+str1);
//为按钮设置绑定事件
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 设置intent之间的跳转
Intent intent = new Intent(TestActivity.this,
PhoneGap2Activity.class);
//启动intent
startActivity(intent);
2.在PhoneGap2Activity里面,这个类继承的是DroidGap类,这样的话在这个activity里面就很容易跳转到一个html页面了。也就是说这个activity会跳转到
某个html页面里面。那么显示的就是跳转后html页面的内容了。我在思考怎样从跳转后的html页面回到TestActivity里面去呢,这里面就涉及到js调用java
的代码了,其实同过appView.addJavascriptInterface(obj,String str)增加一个js操作java的接口就可以了,第一个参数是类的实例,第二个参数时调用
该实例的js的名字。
下面是PhoneGap2Activity代码:
package com.
import org.apache.cordova.DroidG
import android.content.I
import android.os.B
public class PhoneGap2Activity extends DroidGap {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl(&file:///android_asset/www/index.html&);
//在该方法中增加js操作java的接口,this为当前对象,js1为操作java文件的javascript的名字
appView.addJavascriptInterface(this, &js1&);
public void method(String str,String str1) {
Intent intent = new Intent();
intent.putExtra(&name&, str);
intent.putExtra(&pass&, str);
intent.setClass(PhoneGap2Activity.this, TestActivity.class);
startActivity(intent);
3.这个html页面就是跳转后的html页面,它通过定义的js函数直接调用java方法,通过js调用PhoneGap2Activity的method方法,从而实现html页面向
TestActivity跳转的功能。----注意引入的包
&!DOCTYPE html PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd&&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
&title&PhoneGap&/title&
&script type=&text/javascript& charset=&utf-8& src=&cordova.js&&&/script&
&link rel=&stylesheet& type=&text/css&
href=&css/jquery.mobile-1.3.2.min.css&&
&script type=&text/javascript& charset=&utf-8& src=&js/jquery-1.6.4.min.js&&&/script&
&script type=&text/javascript& src=&js/jquery.mobile-1.3.2.min.js&&&/script&
&script type=&text/javascript&&
$(&#page&).live(&pagecreate&,function(){
$(&#b&).click(function() {
js1.method($(&#text1&).val(),$(&#text2&).val());
&div data-role=&page& id=&page&&
&div data-role=&header& data-position=&fixed&&
&h1&标题&/h1&
&div data-role=&content&&
&h1&Hello World&/h1&
&a id=&b& data-role=&button& &跳转到activity&/a&
用户名:&input type=&text& id=&text1& placeholder=&输入内容& /&
密 码:&input type=&text& id=&text1& placeholder=&输入内容& /&
&div data-role=&footer&
data-position=&fixed&&
&h4&脚注&/h4&
注:对于上面的的例子,如果用虚拟机调试,当虚拟机版本为2.3时,可能没有结果,程序并没有问题,因为这是该版本虚拟机的bug,将版本改为2.2就可以解
决这一bug。当然,如果你用手机调试的话,就没有问题了。
运行效果图:
初始化页面如下:
初始值均为null,点击按钮进入html页面,输入用户名和密码,如下图:
点击按钮,回到TestActivity,如下图
源码下载:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 cordova 跳转原生页面 的文章

 

随机推荐