1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > H5网页调用原生支付宝支付的完整demo

H5网页调用原生支付宝支付的完整demo

时间:2021-06-18 22:55:26

相关推荐

H5网页调用原生支付宝支付的完整demo

检测到支付宝时会调起原生APP,检测不到支付宝时会调起网页版支付宝

package cn.showmac.simpledemo;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.KeyEvent;import android.view.View;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.ProgressBar;import com.alipay.sdk.app.PayTask;import com.alipay.sdk.util.H5PayResultModel;import java.lang.ref.WeakReference;public class H5Activity extends BaseActivity {private WebView mWebView;private ProgressBar bar;private String baseUrl = "http://5000.gr2c5266.showmac.ali-:10080";private TestHandler mHandler = new TestHandler(this);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_h5);bar = (ProgressBar) findViewById(R.id.progressBar);mWebView = (WebView) findViewById(R.id.webView);WebSettings settings = mWebView.getSettings();settings.setJavaScriptEnabled(true);settings.setAllowFileAccess(true);settings.setCacheMode(WebSettings.LOAD_NO_CACHE);settings.setDomStorageEnabled(true);settings.setGeolocationEnabled(true);mWebView.loadUrl(baseUrl);mWebView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);if (newProgress == 100) {bar.setVisibility(View.INVISIBLE);} else {bar.setVisibility(View.VISIBLE);bar.setProgress(newProgress);}}});mWebView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(final WebView view, String url) {final PayTask task = new PayTask(H5Activity.this);//处理订单信息final String ex = task.fetchOrderInfoFromH5PayUrl(url);if (!TextUtils.isEmpty(ex)) {//调用支付接口进行支付new Thread(new Runnable() {public void run() {H5PayResultModel result = task.h5Pay(ex, true);Message message = new Message();message.what = 0;mHandler.sendMessage(message);}}).start();} else {view.loadUrl(url);}return true;}});findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {mWebView.goBack(); //goBack()表示返回WebView的上一页面return true;}finish();return false;}@Overrideprotected void onDestroy() {super.onDestroy();if (mWebView != null) {mWebView.removeAllViews();mWebView.destroy();}if (mHandler != null) {mHandler.removeCallbacksAndMessages(null);mHandler = null;}}public class TestHandler extends Handler {WeakReference<Activity> mActivity;public TestHandler(Activity activity) {mActivity = new WeakReference<>(activity);}@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);Activity activity = mActivity.get();if (activity != null) {if (msg.what == 0) {mWebView.loadUrl(baseUrl);}}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。