重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Android webview 传参大小如下
成都创新互联公司于2013年开始,先为江都等服务建站,江都等地企业,进行企业商务咨询服务。为江都企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
订单页面是webview,但是支付页面是客户端做,所以要在去付款的标签上onclick js传参。
function OrderPay(order_id,pay_type,pay_account_id) {undefinedif (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {undefinedwindow.location.href = 'aoxintest://OrderId/' + order_id+'/PayType/'+pay_type+'/PayAccountId/'+pay_account_id;} else if (navigator.userAgent.match(/(android);?/i)) {undefinedwindow.androidOrderPay.AndroidOrderPay(order_id,pay_type,pay_account_id);
有点难懂,ios系统判断传参的那个还好,但是android的代码看得一头雾水。再网上查到了一篇讲Android WebView的文章:
就是WebView的Js代码可以调用到Android代码中的方法,可以用AddJavascriptInterface方法在JS和Android间绑定一个新的窗口。因此JS代码中的androidOrderPay应该只是JAVA对象的别名的意思么。
可使用Android自带的httpClient实现Android与java web之间的数据的交互。
具体实现代码:
1. GET 方式传递参数
//先将参数放入List,再对参数进行URL编码
ListBasicNameValuePair params = new LinkedListBasicNameValuePair();
params.add(new BasicNameValuePair("param1", "数据")); //增加参数1
params.add(new BasicNameValuePair("param2", "value2"));//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8");//对参数编码
String baseUrl = "服务器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient();
try {
android中activity中向service传递参数,有如下方法:
1.在Activity里注册一个BroadcastReceiver,Service完成某个任务就可以发一个广播,接收器收到广播后通知activity做相应的操作。
2.使用bindService来关联Service和Application,应用.apk里的所有组件一般情况都运行在同一个进程中,所以不需要用到IPC,bindService成功后,Service的Client可以得到Service返回的一个iBinder引用,具体的参见Service的文档及onBind的例子,这样Service的引用就可以通过返回的iBinder对象得到,如
public class LocalService extends Service {
// This is the object that receives interactions from clients. See
// RemoteService for a more complete example.
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
之后Client通过这个iBinder对象得到Service对象引用之后,可以直接和Service通讯,比如读取Service中的值或是调用Service的方法。
第一个页面跳转 传递值
Button bn1=(Button)findViewById(R.id.btn_Login); //跳转
bn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent=new Intent(tiaoz.this,nexts.class);
//传值
EditText txt_username=(EditText)findViewById(R.id.edit_username);
EditText txt_password=(EditText)findViewById(R.id.edit_password);
Bundle bundle = new Bundle();
bundle.putString("key_username", txt_username.getText().toString());
bundle.putString("key_password", txt_password.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
finish();
}
});
第二个页面接收值
Bundle bunde = this.getIntent().getExtras();
String strs="用户名:"+bunde.getString("key_username").toString()+"密码:"+bunde.getString("key_password").toString();
//改变文本框的文本内容
show.setText(strs);