Android webview 傳參大小如下
成都創(chuàng)新互聯(lián)公司于2013年開始,先為江都等服務(wù)建站,江都等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為江都企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
訂單頁面是webview,但是支付頁面是客戶端做,所以要在去付款的標(biāo)簽上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系統(tǒng)判斷傳參的那個還好,但是android的代碼看得一頭霧水。再網(wǎng)上查到了一篇講Android WebView的文章:
就是WebView的Js代碼可以調(diào)用到Android代碼中的方法,可以用AddJavascriptInterface方法在JS和Android間綁定一個新的窗口。因此JS代碼中的androidOrderPay應(yīng)該只是JAVA對象的別名的意思么。
可使用Android自帶的httpClient實現(xiàn)Android與java web之間的數(shù)據(jù)的交互。
具體實現(xiàn)代碼:
1. GET 方式傳遞參數(shù)
//先將參數(shù)放入List,再對參數(shù)進(jìn)行URL編碼
ListBasicNameValuePair params = new LinkedListBasicNameValuePair();
params.add(new BasicNameValuePair("param1", "數(shù)據(jù)")); //增加參數(shù)1
params.add(new BasicNameValuePair("param2", "value2"));//增加參數(shù)2
String param = URLEncodedUtils.format(params, "UTF-8");//對參數(shù)編碼
String baseUrl = "服務(wù)器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//將URL與參數(shù)拼接
HttpClient httpClient = new DefaultHttpClient();
try {
android中activity中向service傳遞參數(shù),有如下方法:
1.在Activity里注冊一個BroadcastReceiver,Service完成某個任務(wù)就可以發(fā)一個廣播,接收器收到廣播后通知activity做相應(yīng)的操作。
2.使用bindService來關(guān)聯(lián)Service和Application,應(yīng)用.apk里的所有組件一般情況都運(yùn)行在同一個進(jìn)程中,所以不需要用到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中的值或是調(diào)用Service的方法。
第一個頁面跳轉(zhuǎn) 傳遞值
Button bn1=(Button)findViewById(R.id.btn_Login); //跳轉(zhuǎn)
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();
//改變文本框的文本內(nèi)容
show.setText(strs);