检测到支付宝时会调起原生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-sh.goodrain.net:10080";

private TestHandler mHandler = new TestHandler(this);

@Override

protected 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() {

@Override

public 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() {

@Override

public 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() {

@Override

public void onClick(View v) {

finish();

}

});

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {

mWebView.goBack(); //goBack()表示返回WebView的上一页面

return true;

}

finish();

return false;

}

@Override

protected void onDestroy() {

super.onDestroy();

if (mWebView != null) {

mWebView.removeAllViews();

mWebView.destroy();

}

if (mHandler != null) {

mHandler.removeCallbacksAndMessages(null);

mHandler = null;

}

}

public class TestHandler extends Handler {

WeakReferencemActivity;

public TestHandler(Activity activity) {

mActivity = new WeakReference<>(activity);

}

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

Activity activity = mActivity.get();

if (activity != null) {

if (msg.what == 0) {

mWebView.loadUrl(baseUrl);

}

}

}

}

}

Logo

华为AI开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐