使用phonegap插件启动另一个Android+Activity
2014-03-04 22:32
465 查看
前提:
下载一个新版本的phonegap框架包,包含一个phonegap-x.x.x.jar(引入libs),一个phonegap-x.x.x.js(放在assets/www/),一个xml文件夹(放在res目录下)
Let’s Start~~~
1、新建一个java类,继承plugin类。重写它的execute方法:
publicclass pluginTest01 extends Plugin{
private Object synObj = new Object();
@Override
public PluginResult execute(String action, JSONArray data, String callbackID) {
// TODO Auto-generated method stub
PluginResult result = null;
try {
PluginResult.Status status = PluginResult.Status.OK;
if(action.equals("getsubject")){
Log.e("test", "test plugin js -> java~~~~"+data.getString(0));
Log.e("test", "test plugin js -> java~~~~");
//result = new PluginResult(status, data.getString(0));
handler.sendEmptyMessage(1);
sleep();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
接着,自定义一个handler处理新页面的跳转工作,对于为什么要用handler我的理解是主线程被占了~~~:
private Handler handler = new Handler() {
publicvoid handleMessage(Message msg) {
if (msg == null) {
return;
}
switch (msg.what) {
case 1:
Intent intent = new Intent(ctx.getBaseContext(), Temp.class);//你想去的activity(exp:Temp)
ctx.startActivityForResult(pluginTest01.this, intent, 1);
break;
}
};
};
然后,重写plugin类的onActivityResult方法,这个方法在返回webview时调用:
@Override
publicvoid onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
if(requestCode==1){
if(resultCode == Activity.RESULT_CANCELED){
//返回时调用
Log.e("test", "result plugin -> java~~~~");
Log.e("test", "result plugin -> java~~~~");
weakup();
}
}else{
super.onActivityResult(requestCode, resultCode, intent);
}
}
下面自己构造sleep()和weakup(),不多解释:
privatevoid sleep()
{
try
{
synchronized(synObj)
{
synObj.wait();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
privatevoid weakup()
{
synchronized(synObj)
{
synObj.notify();
}
}
}
这样,一个phonegap插件就写好了。
2、在plugin.xml中加入以下代码,注册这个插件:
<plugin name="pluginTest01" value="wgj.plugin.pluginTest01"/>
解释:name-自己起的别名,value-真实的包名.类名
3、在phonegap提供的js文件(位置:assets/www/xxx.js)最后面加入一段代码:
var testAndroid01API=function(){};
testAndroid01API.prototype.getsubject = function(params, success, fail)
{
return PhoneGap.exec(
function(args){ success(args); },
function(args){ fail(args); },
'pluginTest01', //java类
'getsubject', //action
[params] //params
);
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin('testAndroid01API', new testAndroid01API());
});
4、自己写个html页面,放在assets/www/文件夹下,贴个我的测试页面代码:
<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript">
function test01(){
var subject = document.getElementById("text1").value
window.plugins.testAndroid01API.getsubject(subject,
function(r){//alert(r);
},
function(e){//alert(e);
}
);
}
</script>
</head>
<body>
<h1>Hello World</h1>
<input type="hidden" name="text1" id="text1" value="110"/>
<button type="button">Click Me!</button>
</body>
</html>
5、新建一个android起始activity,继承DroidGap:
import android.os.Bundle;
import com.phonegap.*;
publicclass PhonegapDemo extends DroidGap {
/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}
}
大功告成啦,点击html中的button就可以跳转到你想去的activity了。
下载一个新版本的phonegap框架包,包含一个phonegap-x.x.x.jar(引入libs),一个phonegap-x.x.x.js(放在assets/www/),一个xml文件夹(放在res目录下)
Let’s Start~~~
1、新建一个java类,继承plugin类。重写它的execute方法:
publicclass pluginTest01 extends Plugin{
private Object synObj = new Object();
@Override
public PluginResult execute(String action, JSONArray data, String callbackID) {
// TODO Auto-generated method stub
PluginResult result = null;
try {
PluginResult.Status status = PluginResult.Status.OK;
if(action.equals("getsubject")){
Log.e("test", "test plugin js -> java~~~~"+data.getString(0));
Log.e("test", "test plugin js -> java~~~~");
//result = new PluginResult(status, data.getString(0));
handler.sendEmptyMessage(1);
sleep();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
接着,自定义一个handler处理新页面的跳转工作,对于为什么要用handler我的理解是主线程被占了~~~:
private Handler handler = new Handler() {
publicvoid handleMessage(Message msg) {
if (msg == null) {
return;
}
switch (msg.what) {
case 1:
Intent intent = new Intent(ctx.getBaseContext(), Temp.class);//你想去的activity(exp:Temp)
ctx.startActivityForResult(pluginTest01.this, intent, 1);
break;
}
};
};
然后,重写plugin类的onActivityResult方法,这个方法在返回webview时调用:
@Override
publicvoid onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
if(requestCode==1){
if(resultCode == Activity.RESULT_CANCELED){
//返回时调用
Log.e("test", "result plugin -> java~~~~");
Log.e("test", "result plugin -> java~~~~");
weakup();
}
}else{
super.onActivityResult(requestCode, resultCode, intent);
}
}
下面自己构造sleep()和weakup(),不多解释:
privatevoid sleep()
{
try
{
synchronized(synObj)
{
synObj.wait();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
privatevoid weakup()
{
synchronized(synObj)
{
synObj.notify();
}
}
}
这样,一个phonegap插件就写好了。
2、在plugin.xml中加入以下代码,注册这个插件:
<plugin name="pluginTest01" value="wgj.plugin.pluginTest01"/>
解释:name-自己起的别名,value-真实的包名.类名
3、在phonegap提供的js文件(位置:assets/www/xxx.js)最后面加入一段代码:
var testAndroid01API=function(){};
testAndroid01API.prototype.getsubject = function(params, success, fail)
{
return PhoneGap.exec(
function(args){ success(args); },
function(args){ fail(args); },
'pluginTest01', //java类
'getsubject', //action
[params] //params
);
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin('testAndroid01API', new testAndroid01API());
});
4、自己写个html页面,放在assets/www/文件夹下,贴个我的测试页面代码:
<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript">
function test01(){
var subject = document.getElementById("text1").value
window.plugins.testAndroid01API.getsubject(subject,
function(r){//alert(r);
},
function(e){//alert(e);
}
);
}
</script>
</head>
<body>
<h1>Hello World</h1>
<input type="hidden" name="text1" id="text1" value="110"/>
<button type="button">Click Me!</button>
</body>
</html>
5、新建一个android起始activity,继承DroidGap:
import android.os.Bundle;
import com.phonegap.*;
publicclass PhonegapDemo extends DroidGap {
/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}
}
大功告成啦,点击html中的button就可以跳转到你想去的activity了。
相关文章推荐
- 使用phonegap插件启动另一个Android+Activity
- 使用phonegap插件启动另一个Android+Activity
- 使用phonegap插件启动另一个Android+Activity
- 安卓入门 使用android创建一个项目 从启动activity中响应按钮事件 启动另一个activity 并传递参数
- phonegap android插件,启动activity并返回值
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
- android 使用BroadcastReceiver实现开机启动Service或Activity
- 关于在android程序执行过程中使用Intent启动另一个活动后,同个方法未执行的代码是否会继续执行。
- 使用Intent启动另一个Activity
- Android开发——通过广播启动另一个应用的Activity
- android 一个apk启动另一个apk的activity
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- Android插件化基础(4),动态启动插件中的Activity
- android&nbsp;activity启动另一个进程的…
- Android 使用Intent隐式传递启动Activity(访问网址,打电话等)
- Android开发——通过广播启动另一个应用的Activity
- [Phonegap+Sencha Touch] 移动开发61 使用 URL Schemes实现一个App启动另一个App的功能
- Android中的startActivityForResult启动活动并取得返回数据的使用
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
- Android中级教程(二)之调用另一个Activity---Intent对象的使用!