Compare commits
No commits in common. 'dart3_last' and 'master' have entirely different histories.
dart3_last
...
master
@ -1,28 +0,0 @@ |
|||||||
# This file configures the analyzer, which statically analyzes Dart code to |
|
||||||
# check for errors, warnings, and lints. |
|
||||||
# |
|
||||||
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled |
|
||||||
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be |
|
||||||
# invoked from the command line by running `flutter analyze`. |
|
||||||
|
|
||||||
# The following line activates a set of recommended lints for Flutter apps, |
|
||||||
# packages, and plugins designed to encourage good coding practices. |
|
||||||
include: package:flutter_lints/flutter.yaml |
|
||||||
|
|
||||||
linter: |
|
||||||
# The lint rules applied to this project can be customized in the |
|
||||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml` |
|
||||||
# included above or to enable additional rules. A list of all available lints |
|
||||||
# and their documentation is published at https://dart.dev/lints. |
|
||||||
# |
|
||||||
# Instead of disabling a lint rule for the entire project in the |
|
||||||
# section below, it can also be suppressed for a single line of code |
|
||||||
# or a specific dart file by using the `// ignore: name_of_lint` and |
|
||||||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file |
|
||||||
# producing the lint. |
|
||||||
rules: |
|
||||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule |
|
||||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule |
|
||||||
|
|
||||||
# Additional information about this file can be found at |
|
||||||
# https://dart.dev/guides/language/analysis-options |
|
@ -0,0 +1,7 @@ |
|||||||
|
<hbuilder version="1.9.9.80110" debug="false" syncDebug="false"> |
||||||
|
<apps> |
||||||
|
<app appid="__UNI__ACD00DA" appver="1.0"/> |
||||||
|
<app appid="__UNI__E60E056" appver="1.0"/> |
||||||
|
</apps> |
||||||
|
</hbuilder> |
||||||
|
|
@ -0,0 +1,92 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8"/> |
||||||
|
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> |
||||||
|
<meta name="HandheldFriendly" content="true"/> |
||||||
|
<meta name="MobileOptimized" content="320"/> |
||||||
|
<title>Error</title> |
||||||
|
<script type="text/javascript"> |
||||||
|
// H5 plus事件处理 |
||||||
|
var ws=null; |
||||||
|
function plusReady(){ |
||||||
|
// Android处理返回键 |
||||||
|
plus.key.addEventListener('backbutton',function(){ |
||||||
|
(history.length==1)&&ws.close(); |
||||||
|
var c=setTimeout(function(){ |
||||||
|
ws.close(); |
||||||
|
},1000); |
||||||
|
window.onbeforeunload=function(){ |
||||||
|
clearTimeout(c); |
||||||
|
} |
||||||
|
history.go(-2); |
||||||
|
},false); |
||||||
|
ws=plus.webview.currentWebview(); |
||||||
|
} |
||||||
|
if(window.plus){ |
||||||
|
plusReady(); |
||||||
|
}else{ |
||||||
|
document.addEventListener('plusready',plusReady,false); |
||||||
|
} |
||||||
|
document.addEventListener('touchstart',function(){ |
||||||
|
return false; |
||||||
|
},true); |
||||||
|
// 禁止选择 |
||||||
|
document.oncontextmenu=function(){ |
||||||
|
return false; |
||||||
|
}; |
||||||
|
// 获取错误信息 |
||||||
|
document.addEventListener("error",function(e){ |
||||||
|
info.innerText="请求的页面("+e.url+")无法打开"; |
||||||
|
console.log("请求的页面无法打开:"+e.href); |
||||||
|
},false); |
||||||
|
</script> |
||||||
|
<style> |
||||||
|
*{ |
||||||
|
-webkit-user-select: none; |
||||||
|
} |
||||||
|
html,body{ |
||||||
|
margin: 0px; |
||||||
|
padding: 0px; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
text-align: center; |
||||||
|
word-break: break-all; |
||||||
|
-webkit-touch-callout:none; |
||||||
|
-webkit-tap-highlight-color:rgba(0,0,0,0); |
||||||
|
} |
||||||
|
.button{ |
||||||
|
width: 50%; |
||||||
|
font-size: 18px; |
||||||
|
font-weight: normal; |
||||||
|
text-decoration: none; |
||||||
|
text-align: center; |
||||||
|
padding: .5em 0em; |
||||||
|
margin: .5em auto; |
||||||
|
color: #333333; |
||||||
|
background-color: #EEEEEE; |
||||||
|
border: 1px solid #CCCCCC; |
||||||
|
-webkit-border-radius: 5px; |
||||||
|
border-radius: 5px; |
||||||
|
} |
||||||
|
.button:active{ |
||||||
|
background-color: #CCCCCC; |
||||||
|
} |
||||||
|
</style> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div style="width:100%;height:20%;"></div> |
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 512 512" style="height:20%;width:30%"> |
||||||
|
<g id="icomoon-ignore"> |
||||||
|
<line stroke-width="1" x1="" y1="" x2="" y2="" stroke="#449FDB" opacity=""></line> |
||||||
|
</g> |
||||||
|
<path d="M256 0c-141.385 0-256 114.615-256 256s114.615 256 256 256 256-114.615 256-256-114.615-256-256-256zM352 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM160 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM352.049 390.37c-19.587-32.574-55.272-54.37-96.049-54.37s-76.462 21.796-96.049 54.37l-41.164-24.698c27.98-46.535 78.958-77.672 137.213-77.672s109.232 31.137 137.213 77.672l-41.164 24.698z" fill="#666666"></path> |
||||||
|
</svg> |
||||||
|
<p style="font-size:18px;font-weight:bolder;">We're sorry ...</p> |
||||||
|
<p id="info" style="font-size:12px;"></p> |
||||||
|
<!--<div class="button" onclick="history.back()">Retry</div>--> |
||||||
|
<div class="button" onclick="if(history.length == 1){ws.close();}else{ws.back();ws.back();}">Back</div> |
||||||
|
<div class="button" onclick="ws.close()">Close</div> |
||||||
|
<div class="button" onclick="plus.runtime.restart()">Restart</div> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,73 @@ |
|||||||
|
<properties> |
||||||
|
<features> |
||||||
|
<feature name="Barcode" value="io.dcloud.feature.barcode2.BarcodeFeatureImpl"/> |
||||||
|
<feature name="Speech" value="io.dcloud.feature.speech.SpeechFeatureImpl"> |
||||||
|
<module name="iFly" value="io.dcloud.feature.speech.IflySpeechEngine"/> |
||||||
|
<module name="baidu" value="io.dcloud.feature.speech.BaiduSpeechEngine"/> |
||||||
|
</feature> |
||||||
|
<feature name="Maps" value="io.dcloud.js.map.amap.JsMapPluginImpl"/> |
||||||
|
<!--<feature name="Maps" value="io.dcloud.js.map.JsMapPluginImpl"/>--> |
||||||
|
<feature name="Contacts" value="io.dcloud.feature.contacts.ContactsFeatureImpl"/> |
||||||
|
<feature name="Messaging" value="io.dcloud.adapter.messaging.MessagingPluginImpl"/> |
||||||
|
<feature name="Camera" value="io.dcloud.js.camera.CameraFeatureImpl"/> |
||||||
|
<feature name="Console" value="io.dcloud.feature.pdr.LoggerFeatureImpl"/> |
||||||
|
<feature name="Device" value="io.dcloud.feature.device.DeviceFeatureImpl"/> |
||||||
|
<feature name="File" value="io.dcloud.js.file.FileFeatureImpl"/> |
||||||
|
<feature name="Proximity" value="io.dcloud.feature.sensor.ProximityFeatureImpl"/> |
||||||
|
<feature name="Storage" value="io.dcloud.feature.pdr.NStorageFeatureImpl"/> |
||||||
|
<feature name="Cache" value="io.dcloud.feature.pdr.CoreCacheFeatureImpl"/> |
||||||
|
<feature name="Invocation" value="io.dcloud.invocation.Invocation"/> |
||||||
|
<feature name="Navigator" value="io.dcloud.feature.ui.navigator.NavigatorUIFeatureImpl"/> |
||||||
|
<feature name="NativeUI" value="io.dcloud.feature.ui.nativeui.NativeUIFeatureImpl"/> |
||||||
|
<feature name="UI" value="io.dcloud.feature.ui.UIFeatureImpl"> |
||||||
|
<module name="Navigator" value="io.dcloud.feature.ui.NavView"/> |
||||||
|
</feature> |
||||||
|
<feature name="Gallery" value="io.dcloud.js.gallery.GalleryFeatureImpl"/> |
||||||
|
<feature name="Downloader" value="io.dcloud.net.DownloaderFeatureImpl"/> |
||||||
|
<feature name="Uploader" value="io.dcloud.net.UploadFeature"/> |
||||||
|
<feature name="Push" value="io.dcloud.feature.aps.APSFeatureImpl"> |
||||||
|
<module name="igexin" value="io.dcloud.feature.apsGt.GTPushService"/> |
||||||
|
<!-- mkeypush --> |
||||||
|
</feature> |
||||||
|
<feature name="Zip" value="io.dcloud.feature.pdr.ZipFeature"/> |
||||||
|
<feature name="Audio" value="io.dcloud.feature.audio.AudioFeatureImpl"/> |
||||||
|
<feature name="Runtime" value="io.dcloud.feature.pdr.RuntimeFeatureImpl"/> |
||||||
|
<feature name="VideoPlayer" value="io.dcloud.media.MediaFeatureImpl"/> |
||||||
|
<feature name="LivePusher" value="io.dcloud.media.live.LiveMediaFeatureImpl"/> |
||||||
|
<feature name="XMLHttpRequest" value="io.dcloud.net.XMLHttpRequestFeature"/> |
||||||
|
<feature name="Statistic" value="io.dcloud.feature.statistics.StatisticsFeatureImpl"/> |
||||||
|
<feature name="Accelerometer" value="io.dcloud.feature.sensor.AccelerometerFeatureImpl"/> |
||||||
|
<feature name="Orientation" value="io.dcloud.feature.sensor.OrientationFeatureImpl"/> |
||||||
|
<feature name="NativeObj" value="io.dcloud.feature.nativeObj.FeatureImpl"/> |
||||||
|
<feature name="Geolocation" value="io.dcloud.js.geolocation.GeolocationFeatureImpl"/> |
||||||
|
<feature name="Payment" value="io.dcloud.feature.payment.PaymentFeatureImpl"> |
||||||
|
<module name="AliPay" value="io.dcloud.feature.payment.alipay.AliPay"/> |
||||||
|
<module name="Payment-Weixin" value="io.dcloud.feature.payment.weixin.WeiXinPay"/> |
||||||
|
<module name="Payment-Qihoo" value="io.dcloud.feature.payment.qihoopay.QihooPay"/> |
||||||
|
</feature> |
||||||
|
<feature name="Share" value="io.dcloud.share.ShareFeatureImpl"> |
||||||
|
<module name="Sina" value="io.dcloud.share.sina.SinaWeiboApiManager"/> |
||||||
|
<module name="Tencent" value="io.dcloud.share.tencent.TencentWeiboApiManager"/> |
||||||
|
<module name="Weixin" value="io.dcloud.share.mm.WeiXinApiManager"/> |
||||||
|
<module name="QQ" value="io.dcloud.share.qq.QQApiManager"/> |
||||||
|
</feature> |
||||||
|
<feature name="OAuth" value="io.dcloud.feature.oauth.OAuthFeatureImpl"> |
||||||
|
<module name="OAuth-Weixin" value="io.dcloud.feature.oauth.weixin.WeiXinOAuthService"/> |
||||||
|
<module name="OAuth-QQ" value="io.dcloud.feature.oauth.qq.QQOAuthService"/> |
||||||
|
<module name="OAuth-Sina" value="io.dcloud.feature.oauth.sina.SinaOAuthService"/> |
||||||
|
<module name="OAuth-Qihoo" value="io.dcloud.oauth.qihoo.QihooOAuthService"/> |
||||||
|
<module name="OAuth-MiUi" value="io.dcloud.feature.oauth.miui.MiUiOAuthService"/> |
||||||
|
</feature> |
||||||
|
<feature name="Stream" value="io.dcloud.appstream.js.StreamAppFeatureImpl"/> |
||||||
|
<feature name="Fingerprint" value="io.dcloud.feature.fingerprint.FingerPrintsImpl"/> |
||||||
|
<feature name="iBeacon" value="io.dcloud.feature.iBeacon.WxBluetoothFeatureImpl"/> |
||||||
|
<feature name="Bluetooth" value="io.dcloud.feature.bluetooth.BluetoothFeature"/> |
||||||
|
</features> |
||||||
|
|
||||||
|
<services> |
||||||
|
<service name="push" value="io.dcloud.feature.aps.APSFeatureImpl"/> |
||||||
|
<service name="Statistic" value="io.dcloud.feature.statistics.StatisticsBootImpl"/> |
||||||
|
<service name="Downloader" value="io.dcloud.net.DownloaderBootImpl"/> |
||||||
|
<service name="Maps" value="io.dcloud.js.map.MapInitImpl"/> |
||||||
|
</services> |
||||||
|
</properties> |
@ -0,0 +1,129 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
package com.zsw.huixiang |
||||||
|
|
||||||
|
import android.content.Context |
||||||
|
import androidx.annotation.NonNull |
||||||
|
import io.dcloud.common.adapter.util.Logger |
||||||
|
import io.dcloud.feature.sdk.DCSDKInitConfig |
||||||
|
import io.dcloud.feature.sdk.DCUniMPSDK |
||||||
|
import io.dcloud.feature.sdk.MenuActionSheetItem |
||||||
|
import io.flutter.embedding.engine.plugins.FlutterPlugin |
||||||
|
import io.flutter.plugin.common.MethodCall |
||||||
|
import io.flutter.plugin.common.MethodChannel |
||||||
|
import io.flutter.plugin.common.MethodChannel.MethodCallHandler |
||||||
|
import io.flutter.plugin.common.MethodChannel.Result |
||||||
|
import org.json.JSONObject |
||||||
|
|
||||||
|
|
||||||
|
/** MinPlugin */ |
||||||
|
class MinPlugin: FlutterPlugin, MethodCallHandler { |
||||||
|
/// The MethodChannel that will the communication between Flutter and native Android |
||||||
|
/// |
||||||
|
/// This local reference serves to register the plugin with the Flutter Engine and unregister it |
||||||
|
/// when the Flutter Engine is detached from the Activity |
||||||
|
private lateinit var channel : MethodChannel |
||||||
|
private lateinit var context : Context |
||||||
|
|
||||||
|
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { |
||||||
|
context = flutterPluginBinding.applicationContext; |
||||||
|
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "min") |
||||||
|
channel.setMethodCallHandler(this) |
||||||
|
} |
||||||
|
|
||||||
|
override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { |
||||||
|
if (call.method == "initialize") { |
||||||
|
if (!DCUniMPSDK.getInstance().isInitialize) { |
||||||
|
val item = MenuActionSheetItem("退出", "tc"); |
||||||
|
val sheetItems: MutableList<MenuActionSheetItem> = ArrayList() |
||||||
|
sheetItems.add(item) |
||||||
|
val config = DCSDKInitConfig.Builder() |
||||||
|
.setCapsule(true) |
||||||
|
.setMenuDefFontSize("16px") |
||||||
|
.setMenuDefFontColor("#000000") |
||||||
|
.setMenuDefFontWeight("normal") |
||||||
|
.setMenuActionSheetItems(sheetItems) |
||||||
|
.setEnableBackground(false) //后台运行 |
||||||
|
.build() |
||||||
|
DCUniMPSDK.getInstance().initialize(context, config) { |
||||||
|
result.success(it) |
||||||
|
} |
||||||
|
DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack { p0, p1 -> |
||||||
|
Logger.e("p0: $p0 p1:$p1"); |
||||||
|
when (p1) { |
||||||
|
"tc" -> { |
||||||
|
Logger.e("用户点击了退出"); |
||||||
|
DCUniMPSDK.getInstance().closeCurrentApp() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
DCUniMPSDK.getInstance().setUniMPOnCloseCallBack { |
||||||
|
Logger.e("用户点击了退出 it: $it") |
||||||
|
DCUniMPSDK.getInstance().closeCurrentApp() |
||||||
|
} |
||||||
|
} |
||||||
|
} else if (call.method == "isInitialize") { |
||||||
|
result.success(DCUniMPSDK.getInstance().isInitialize) |
||||||
|
} else if (call.method == "isExistsApp") { |
||||||
|
var appid = call.argument<String>("appid"); |
||||||
|
result.success(DCUniMPSDK.getInstance().isExistsApp(appid)) |
||||||
|
} else if (call.method == "getAppVersionInfo") { |
||||||
|
var appid = call.argument<String>("appid"); |
||||||
|
result.success(DCUniMPSDK.getInstance().getAppVersionInfo(appid)["name"]) |
||||||
|
} else if (call.method == "closeCurrentApp") { |
||||||
|
result.success(DCUniMPSDK.getInstance().closeCurrentApp()) |
||||||
|
} else if (call.method == "getAppBasePath") { |
||||||
|
result.success(DCUniMPSDK.getInstance().getAppBasePath(context)) |
||||||
|
} else if (call.method == "runingAppid") { |
||||||
|
result.success(DCUniMPSDK.getInstance().runingAppid) |
||||||
|
} else if (call.method == "currentPageUrl") { |
||||||
|
result.success(DCUniMPSDK.getInstance().currentPageUrl) |
||||||
|
} else if (call.method == "startMin") { |
||||||
|
try { |
||||||
|
var appid = call.argument<String>("appid") |
||||||
|
var hashMap = call.argument<HashMap<String, Object>>("json") |
||||||
|
Logger.e("startMin_json: ${JSONObject(hashMap as Map<*, *>)}") |
||||||
|
DCUniMPSDK.getInstance().startApp(context, appid, JSONObject(hashMap as Map<*, *>)) |
||||||
|
} catch (e: Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
} |
||||||
|
result.success("") |
||||||
|
} else if (call.method == "clickListener") { |
||||||
|
DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack { p0, p1 -> |
||||||
|
Logger.e("p0: $p0 p1:$p1"); |
||||||
|
when (p1) { |
||||||
|
"tc" -> { |
||||||
|
Logger.e("用户点击了退出"); |
||||||
|
DCUniMPSDK.getInstance().closeCurrentApp() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
DCUniMPSDK.getInstance().setUniMPOnCloseCallBack { |
||||||
|
Logger.e("用户点击了退出 it: $it") |
||||||
|
} |
||||||
|
} else if (call.method == "reloadWgt") { |
||||||
|
try { |
||||||
|
var appid = call.argument<String>("appid"); |
||||||
|
var wgtPath = call.argument<String>("wgtPath"); |
||||||
|
DCUniMPSDK.getInstance().releaseWgtToRunPathFromePath(appid, wgtPath) { code, pArgs -> |
||||||
|
if (code == 1) { //释放wgt完成 |
||||||
|
result.success(true) |
||||||
|
} else { |
||||||
|
result.success(false) |
||||||
|
} |
||||||
|
null |
||||||
|
} |
||||||
|
} catch (e: Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
} |
||||||
|
} else { |
||||||
|
result.notImplemented() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { |
||||||
|
channel.setMethodCallHandler(null) |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,67 @@ |
|||||||
|
package com.zsw.huixiang.wxapi |
||||||
|
|
||||||
|
import android.content.Intent |
||||||
|
import android.os.Bundle |
||||||
|
import cn.sharesdk.wechat.utils.WechatHandlerActivity |
||||||
|
import io.dcloud.feature.payment.weixin.AbsWXPayCallbackActivity |
||||||
|
import io.flutter.Log |
||||||
|
|
||||||
|
class WXEntryActivity : WechatHandlerActivity() { |
||||||
|
|
||||||
|
|
||||||
|
// IWXAPI 是第三方app和微信通信的openapi接口 |
||||||
|
|
||||||
|
public override fun onCreate(savedInstanceState: Bundle?) { |
||||||
|
super.onCreate(savedInstanceState) |
||||||
|
Log.e("wx:", "onCreate:") |
||||||
|
|
||||||
|
// try { |
||||||
|
// if (!WXAPiHandler.wxApiRegistered) { |
||||||
|
// var appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA) |
||||||
|
// val wechatAppId = appInfo.metaData.getString("weChatAppId") |
||||||
|
// if (wechatAppId != null ){ |
||||||
|
// WXAPiHandler.setupWxApi(wechatAppId,this) |
||||||
|
// WXAPiHandler.setCoolBool(true) |
||||||
|
// Log.d("fluwx","weChatAppId:" + wechatAppId) |
||||||
|
// }else { |
||||||
|
// Log.e("fluwx","can't load meta-data weChatAppId") |
||||||
|
// } |
||||||
|
// } |
||||||
|
// WXAPiHandler.wxApi?.handleIntent(intent, this) |
||||||
|
// } catch (e: Exception) { |
||||||
|
// e.printStackTrace() |
||||||
|
// startSpecifiedActivity(defaultFlutterActivityAction()) |
||||||
|
// finish() |
||||||
|
// } |
||||||
|
} |
||||||
|
|
||||||
|
// override fun onNewIntent(intent: Intent) { |
||||||
|
// super.onNewIntent(intent) |
||||||
|
// Log.e("wx:", "onNewIntent:") |
||||||
|
|
||||||
|
// setIntent(intent) |
||||||
|
|
||||||
|
// try { |
||||||
|
// WXAPiHandler.wxApi?.handleIntent(intent, this) |
||||||
|
// } catch (e: Exception) { |
||||||
|
// e.printStackTrace() |
||||||
|
// startSpecifiedActivity(defaultFlutterActivityAction()) |
||||||
|
// finish() |
||||||
|
// } |
||||||
|
// } |
||||||
|
|
||||||
|
|
||||||
|
// override fun onReq(baseReq: BaseReq) { |
||||||
|
// Log.e("wx:", "onReq: ${baseReq.toString()}") |
||||||
|
// FIXME: 可能是官方的Bug,从微信拉起APP的Intent类型不对,无法跳转回Flutter Activity |
||||||
|
// 稳定复现场景:微信版本为7.0.5,小程序SDK为2.7.7 |
||||||
|
// FluwxRequestHandler.onReq(baseReq,this) |
||||||
|
// } |
||||||
|
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 |
||||||
|
// override fun onResp(resp: BaseResp) { |
||||||
|
// Log.e("wx:", "onResp: ${resp.toString()}") |
||||||
|
// FluwxResponseHandler.handleResponse(resp) |
||||||
|
// finish() |
||||||
|
// } |
||||||
|
|
||||||
|
} |
@ -0,0 +1,86 @@ |
|||||||
|
package com.zsw.huixiang.wxapi |
||||||
|
|
||||||
|
import android.content.Intent |
||||||
|
import android.content.pm.PackageManager |
||||||
|
import android.os.Bundle |
||||||
|
import android.util.Log |
||||||
|
import com.jarvan.fluwx.handlers.FluwxRequestHandler |
||||||
|
import com.jarvan.fluwx.handlers.FluwxResponseHandler |
||||||
|
import com.jarvan.fluwx.handlers.WXAPiHandler |
||||||
|
import com.tencent.mm.opensdk.modelbase.BaseReq |
||||||
|
import com.tencent.mm.opensdk.modelbase.BaseResp |
||||||
|
import io.dcloud.feature.payment.weixin.AbsWXPayCallbackActivity |
||||||
|
|
||||||
|
|
||||||
|
class WXPayEntryActivity : AbsWXPayCallbackActivity() { |
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) { |
||||||
|
super.onCreate(savedInstanceState) |
||||||
|
try { |
||||||
|
if (!WXAPiHandler.wxApiRegistered) { |
||||||
|
var appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA) |
||||||
|
val wechatAppId = appInfo.metaData.getString("weChatAppId") |
||||||
|
if (wechatAppId != null ){ |
||||||
|
WXAPiHandler.setupWxApi(wechatAppId, this) |
||||||
|
WXAPiHandler.setCoolBool(true) |
||||||
|
io.flutter.Log.d("fluwx", "weChatAppId:$wechatAppId") |
||||||
|
}else { |
||||||
|
io.flutter.Log.e("fluwx", "can't load meta-data weChatAppId") |
||||||
|
} |
||||||
|
} |
||||||
|
WXAPiHandler.wxApi?.handleIntent(intent, this) |
||||||
|
} catch (e: Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
startSpecifiedActivity(defaultFlutterActivityAction()) |
||||||
|
finish() |
||||||
|
} |
||||||
|
Log.e("WXPayEntryActivity", "onCreate") |
||||||
|
} |
||||||
|
|
||||||
|
override fun onNewIntent(intent: Intent) { |
||||||
|
super.onNewIntent(intent) |
||||||
|
|
||||||
|
setIntent(intent) |
||||||
|
|
||||||
|
try { |
||||||
|
WXAPiHandler.wxApi?.handleIntent(intent, this) |
||||||
|
} catch (e: Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
startSpecifiedActivity(defaultFlutterActivityAction()) |
||||||
|
finish() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun onReq(req: BaseReq) { |
||||||
|
super.onReq(req) |
||||||
|
FluwxRequestHandler.onReq(req, this) |
||||||
|
Log.e("WXPayEntryActivity", "req: $req") |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
override fun onResp(resp: BaseResp) { |
||||||
|
FluwxResponseHandler.handleResponse(resp) |
||||||
|
super.onResp(resp) |
||||||
|
Log.e("WXPayEntryActivity", "resp: $resp") |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private fun startSpecifiedActivity(action: String, bundle: Bundle? = null, bundleKey: String? = null) { |
||||||
|
Intent(action).run { |
||||||
|
bundleKey?.let { |
||||||
|
putExtra(bundleKey, bundle) |
||||||
|
} |
||||||
|
addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) |
||||||
|
packageManager?.let { |
||||||
|
resolveActivity(packageManager)?.also { |
||||||
|
startActivity(this) |
||||||
|
finish() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private fun defaultFlutterActivityAction(): String = "$packageName.FlutterActivity" |
||||||
|
|
||||||
|
} |
@ -1,5 +0,0 @@ |
|||||||
package com.zsw.huixiang_app |
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity |
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 192 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 44 KiB |
@ -1,7 +1,5 @@ |
|||||||
#org.gradle.jvmargs=-Xmx1536M |
#org.gradle.jvmargs=-Xmx1536M |
||||||
org.gradle.jvmargs=-Xmx4096m |
org.gradle.jvmargs=-Xmx4096m |
||||||
android.useAndroidX=true |
android.useAndroidX=true |
||||||
android.enableJetifier=true |
android.enableJetifier=true |
||||||
MobSDK.mobEnv=x |
MobSDK.mobEnv=x |
||||||
MobSDK.spEdition=FP |
|
||||||
android.injected.testOnly=false |
|
@ -1,5 +1,8 @@ |
|||||||
|
#Fri Jun 23 08:50:38 CEST 2017 |
||||||
distributionBase=GRADLE_USER_HOME |
distributionBase=GRADLE_USER_HOME |
||||||
distributionPath=wrapper/dists |
distributionPath=wrapper/dists |
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip |
|
||||||
zipStoreBase=GRADLE_USER_HOME |
zipStoreBase=GRADLE_USER_HOME |
||||||
zipStorePath=wrapper/dists |
zipStorePath=wrapper/dists |
||||||
|
#distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip |
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip |
||||||
|
#distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip |
||||||
|
After Width: | Height: | Size: 482 B |
After Width: | Height: | Size: 1003 B |
After Width: | Height: | Size: 657 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 580 B |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 808 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 626 B |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 883 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 654 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 1.7 KiB |