phonegap跳转Activity android插件调用原生

Phonegap的插件   调用本地的Activity

查看我上一篇插件开发的文章: http://blog.csdn.net/aaawqqq/article/details/20401111

本节主要记录调用Activity的方式;  并提供 插件Demo下载

 

插件开发4个步骤:

1 在assents 目录下的  cordova-plugins.js文件添加配置

2 在assets/www 的 plugin目录下编写javascript接口

3 在res/xml 目录下配置  config.xml 文件

4 在src目录下编写java文件 实现跳转

 

 

 

工程:

 

 

1  配置 cordova _plugins.js 文件

首先给大家展示cordova _plugins.js 文件:

 

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [{"file": "plugins/org.apache.cordova.camera/www/CameraConstants.js","id": "org.apache.cordova.camera.Camera","clobbers": ["Camera"]},{"file": "plugins/org.apache.cordova.camera/www/CameraPopoverOptions.js","id": "org.apache.cordova.camera.CameraPopoverOptions","clobbers": ["CameraPopoverOptions"]},{"file": "plugins/org.apache.cordova.camera/www/Camera.js","id": "org.apache.cordova.camera.camera","clobbers": ["navigator.camera"]},{"file": "plugins/org.apache.cordova.camera/www/CameraPopoverHandle.js","id": "org.apache.cordova.camera.CameraPopoverHandle","clobbers": ["CameraPopoverHandle"]},{"file": "plugins/org.apache.cordova.dialogs/www/notification.js","id": "org.apache.cordova.dialogs.notification","merges": ["navigator.notification"]},{"file": "plugins/org.apache.cordova.dialogs/www/android/notification.js","id": "org.apache.cordova.dialogs.notification_android","merges": ["navigator.notification"]},{"file": "plugins/org.apache.cordova.vibration/www/vibration.js","id": "org.apache.cordova.vibration.notification","merges": ["navigator.notification"]},{"file": "plugins/intent.js","id": "org.apache.cordova.intent","merges": ["navigator.intent"]},
];
module.exports.metadata = 
// TOP OF METADATA
{"org.apache.cordova.camera": "0.2.7","org.apache.cordova.dialogs": "0.2.6","org.apache.cordova.vibration": "0.3.7","org.apache.cordova.intent" :"0.0.1",}
// BOTTOM OF METADATA
});

 

2 在plugin目录下编写javascript接口


 

 

 

贴上intent.js的接口代码

cordova.define("org.apache.cordova.intent", function(require, exports, module) { var exec = require('cordova/exec');module.exports = {/*** 一共5个参数第一个 :成功会掉第二个 :失败回调第三个 :将要调用的类的配置名字(在config.xml中配置 稍后在下面会讲解)第四个 :调用的方法名(一个类里可能有多个方法 靠这个参数区分)第五个 :传递的参数  以json的格式*/demo: function(mills) {exec(function(winParam){alert(winParam);}, null, "Demo", "intent", [mills]);},
};});


Demo中成功返回 会弹出一个Alert();   

 

 

在javascript中的 调用语句是

navigator.intent.demo(1);


 

贴上整的javascript

 

<!DOCTYPE html>
<html>  
<head>   <title>Notification Example</title> <script type="text/javascript" charset="utf-8" src="cordova.js"></script>    <script type="text/javascript" charset="utf-8">    // Wait for device API libraries to load    //    document.addEventListener("deviceready", onDeviceReady, false);    // device APIs are available    //    function onDeviceReady() {        // Empty    }    // Show a custom alert    //    native的 Dialog 对话框function showAlert() {        navigator.notification.alert(            'You are the winner!',  // message            'Game Over',            // title            'Done'                  // buttonName        );    }    // Beep three times    //    响铃3声function playBeep() {        navigator.notification.beep(3);    }    // Vibrate for 2 seconds    //    振动function vibrate() {         navigator.notification.vibrate(100000);    }    //	     跳转function intent() {          navigator.intent.demo(1);    		}    </script>  </head>  <body>    <p><a href="#" οnclick="showAlert(); return false;">Show Alert</a></p>    <p><a href="#" οnclick="playBeep(); return false;">Play Beep</a></p>    <p><a href="#" οnclick="vibrate(); return false;">Vibrate</a></p>  <p><a href="#" οnclick="intent(); return false;">Html跳转到android界面</a></p>  </body></html>


 

 

<3> 在res/xml 目录下配置  config.xml 文件

config.xml配置 加上 如下

    <feature name="Demo"><param name="android-package" value="plugins.Plugin_intent" /></feature>


feature的name属性   非常重要 

name必须是步骤< 4 >中   function中调用的类名

value属性指定插件在src目录下的java文件  (命名空间)

 

 

 

前3个步骤 参考上一章 phonegap插件开发

 

这里主要描述 

<4> 编写phonegap的java插件类  调用本地的activity

 

首先继承CordovaPlugin

重写execute方法    execute返回值为true时  此插件可用;返回为false时 此插件失效

在插件类当中获取   this 跳转

Intent intent = new Intent(cordova.getActivity(), DemoActivity.class);cordova.startActivityForResult((CordovaPlugin) this,intent, 200);


如果使用

cordova.getActivity().startActivityForResult(intent,200);  

被调用的Activity 在   setResult之后;

并不会返回到当前的插件中   它将返回到的webView的CordovaActivity当中 ,

Plugin_intent 类的  onActivityResult将收不到消息    ;

我查看源码后得知    cordova这个是CordovaInterface类型的   已由CordovaPlugin实现

在CordovaInterface当中找到了

 /*** Launch an activity for which you would like a result when it finished. When this activity exits,* your onActivityResult() method will be called.** @param command     The command object* @param intent      The intent to start* @param requestCode   The request code that is passed to callback to identify the activity*/abstract public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode);

 

 

 

 

完整实例

package plugins;import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;import android.content.Intent;
import android.util.Log;
import android.widget.Toast;import com.phonegap.helloworld.DemoActivity;public class Plugin_intent extends CordovaPlugin {/*** 注意 构造方法不能为* * Plugin_intent(){}* * 可以不写或者 定义为如下* */public Plugin_intent() {}CallbackContext callbackContext;@Overridepublic boolean execute(String action, JSONArray args,CallbackContext callbackContext) throws JSONException {this.callbackContext = callbackContext;Log.i("123", action);if (action.equals("intent")) {// 获取args的第一个参数String message = args.getString(0);this.function();return true;}return false;}private void function() {// cordova.getActivity() 获取当前activity的thisLog.i("123", cordova.getActivity().toString());Intent intent = new Intent(cordova.getActivity(), DemoActivity.class);cordova.startActivityForResult((CordovaPlugin) this,intent, 200);}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent intent) {super.onActivityResult(requestCode, resultCode, intent);//传递返回值 给js方法callbackContext.success("activity 跳转成功了");Toast.makeText(cordova.getActivity(), "123", 0).show();}
}

 

设置返回值

 

成功返回值:

callbackContext.success("成功");

失败返回值:
callbackContext.error("失败"); 

 

 

 

提供下载Demo下载地址:   审核中.....

补 :插件Demo下载地址: http://download.csdn.net/detail/aaawqqq/6992627

 

 

 

工程下载    将phonegap的platforms导入到eclipse中  

如果报错clear一下  查看导的lib包 有没有报错

如果还有错  那么就是您选用了  google的API   改成最新版的android  API 就好了

如果导入工程遇到问题 可以查阅我此篇文章

Blog:  http://blog.csdn.net/aaawqqq/article/details/20463183

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/66899.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于安卓手机的微信内置浏览器中页面跳转失效的问题

Write By Monkeyfly 以下内容均为原创&#xff0c;如需转载请注明出处。 前提 今天下午在JS前端群里有人问了一个问题&#xff1a; 在微信浏览器中&#xff0c;window.location.href这个跳转方法不能用吗&#xff1f;在安卓手机试过了不行&#xff0c;但是ios可以&#xff…

安卓页面的跳转(按钮点击跳转、自动跳转)

一.创建新页面 在eclipse中建立安卓工程后&#xff0c;默认会有一个页面MainActivity&#xff0c;要实现多个页面的跳转&#xff0c;首先需要建立新的页面 在eclipse建立新的页面过程如下&#xff1a; 要添加的新页面的工程下src 右键---->New—>Other—>选择Android…

安卓跳转按钮的闪退问题

不知道为什么 跳转按钮有时可以跳转有时会闪退 程序并没有报错&#xff0c;求大神指导&#xff01; 闪退的次数特别多&#xff01;

android app跳转到微信

今天写这片文章主要是记录下 app跳转到微信的实现方法&#xff0c;我的项目需求是跳转到微信公众号&#xff0c;由于微信官方关闭了这个直接可以跳到公众号的接口&#xff0c;只能 从app打开微信&#xff0c;让用户自己去搜索。 我的项目需求&#xff1a; 点击跳转微信的时候&…

Android页面跳转(Intent)

Android 意图的使用&#xff08;Intent&#xff09; 显式四种跳转方式一二三四布局代码效果 隐式意图和隐式意图的跳转Intent概述Action属性Data属性Category属性按home键时启动自己做的应用 Component属性Extra属性&#xff08;重点&#xff09;Bundle传递序列化对象 Type属性…

安卓——Intent(实现页面跳转的两种方法)

下图中两个不同的方法就是两种页面之间跳转的情况 1>跳转不返回数据 2>跳转返回数据 实例&#xff1a; 第一种启动方式&#xff08;跳转不返回数据&#xff09; 第二种启动方式&#xff08;跳转返回数据&#xff09; 先看第一种&#xff1a; 点击第一种启动方式按钮…

【安卓开发】安卓页面跳转

目录 一、如何添加一个页面&#xff08;activity&#xff09;二、如何实现页面的跳转二、页面跳转传参1. 方式一2. 方式二安卓线程实现页面跳转安卓创建一个线程 三、Activity&#xff08;页面)的生命周期 一、如何添加一个页面&#xff08;activity&#xff09; 1. 右键 src …

安卓app之页面跳转

手动跳转 1.打开eclipse&#xff0c;New一个安卓工程 后面一直next&#xff0c;知道出现以下界面说明项目创建成功 2.添加第二个页面 一直next&#xff0c;直到出现以下界面 修改 Activity Name &#xff0c;点击Finish&#xff0c;页面添加成功 点击 AndroidManifest.xml 可…

大咖说·对话开源|与Tapdata论道数据技术开放生态

一个良好的开源生态具有哪些特征&#xff1f;开源与商业一定是对立的吗&#xff1f;开源产品应该如何做好商业化&#xff1f; 一个良好的开源生态具有哪些特征&#xff1f;开源与商业一定是对立的吗&#xff1f;开源产品应该如何做好商业化&#xff1f;本期大咖说&#xff0c;阿…

中奖名单公布

阅读本文大概需要 1.8 分钟。 头条今天的推送是恰饭文章&#xff0c;但确实觉得很不错&#xff0c;觉得靠谱才会推荐&#xff0c;感兴趣的可以参与下&#xff0c;反正免费的&#xff0c;不感兴趣忽略就好。 那个&#xff0c;先说声不好意思&#xff0c;五月份的收租抽奖我一直以…

纪录篇 之 我收集整理的一些网址(不断更新 ing)

LZ-Says&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。 前言 起初&#xff0c;不知道写博文是为了什么。 现在&#xff0c;点滴记录&#xff0c;为了更好的明天。 未来&#xff0c;只是为了证明这个世界我来过。 写这篇文章的前提&#xff0c;或者说诱发因素如下…

三金叉见底

三金叉见底 三金叉买入&#xff0c;三死叉止损 技术指标作为一种参考工具&#xff0c;在不同人的眼里会有不同的研判结 果。投资者不应该单以一项指标的讯号而对行情作出绝对的判断&#xff0c;因 为指标所起的只是一种辅助的作用而不是绝对的作用。如果采用多种 指标可以增加…

程序员的人生规划

展望未来&#xff0c;总结过去10年的程序员生涯&#xff0c;给程序员小弟弟小妹妹们的一些总结性忠告。 走过的路&#xff0c;回忆起来是那么曲折&#xff0c;把自己的一些心得体会分享给程序员兄弟姐妹们&#xff0c;虽然时代在变化&#xff0c;但是很可能你也会走我已经做…

第四周周赛——三金三银两铜+签到

A——HDU 5974 A Simple Math Problem <-题目链接 签到题 Given two positive integers a and b,find suitable X and Y to meet the conditions:XYaLeast Common Multiple (X, Y) bInput Input includes multiple sets of test data.Each test data occupies one lin…

工作十年的程序员,却拿着毕业三年的工资……

工作十年的程序员&#xff0c;却拿着毕业三年的工资…… 导语&#xff1a;小韩是一家小公司的软件程序员&#xff0c;而十年后他还在那家公司&#xff0c;依然是一名普通的程序员。算起来&#xff0c;他工作也有十多年了&#xff0c;但是&#xff0c;他却告诉我&#xff0c;他…

孙杨事件的几点事实!

阅读本文大概需要 3.3 分钟。 昨天一个最爆炸的消息&#xff0c;莫过于孙杨被国际体育仲裁法庭禁赛 8 年的判决。 毫无疑问&#xff0c;孙杨是继姚明、刘翔时代之后&#xff0c;在国际体坛影响力最大&#xff0c;人气最高的一位中国体育名将了&#xff0c;所以&#xff0c;无数…

AI领域最有影响力100人,Hinton只排31、Bengio竟然没有上榜?

2021-01-22 00:42:54 作者 | 耳洞打三金 大家好我是三金&#xff0c;今天又是开开心心的一天&#xff0c;如题目和上图所示&#xff0c;我今天在上班摸鱼的时候发现了这样一份号称是“AI领域最有影响力的100人”的榜单。 这可把我给吓了一跳 &#xff0c;我赶紧把这个榜单从头…

谷歌最新提出无需卷积、注意力,纯MLP构成的视觉架构!网友:MLP is All You Need?

2021-05-06 15:50:28 作者 | 耳洞打三金、琰琰 近日&#xff0c;谷歌大脑团队新出了一篇论文&#xff0c;题目为《MLP-Mixer: An all-MLP Architecture for Vision 》&#xff0c;这篇论文是原视觉Transformer&#xff08;ViT&#xff09;团队的一个纯MLP架构的尝试。 本文总…

抖音快速涨粉之抖音用户数据分析

抖音是一款专注于新生代的音乐创意短视频App&#xff0c;提供给年轻人群。截至2020年10月&#xff0c;抖音国内日活跃用户数突破2亿&#xff0c;国内月活跃用户数突破6亿。足迹遍布全世界233个国家和地区&#xff0c;已然成为短视频行业的巨头&#xff0c;行业内有南抖音北快手…

竞品分析—抖音PK快手

1、交互设计方面&#xff1a;进入抖音时&#xff0c;便直接观看视频&#xff0c;抖音通过“向上滑”动作完成视频切换&#xff0c;操作十分流畅&#xff0c;将用户的观赏体验放大到极致。反观快手则通过封面页组成的瀑布流&#xff0c;用户通过浏览找到自己感兴趣的视频进入&am…