Unverified 提交 73db95bd authored 作者: JarvanMo's avatar JarvanMo 提交者: GitHub

Merge pull request #361 from charleyzhu/master

修复微信调起问题
...@@ -61,7 +61,7 @@ object FluwxRequestHandler { ...@@ -61,7 +61,7 @@ object FluwxRequestHandler {
// 稳定复现场景:微信版本为7.0.5,小程序SDK为2.7.7 // 稳定复现场景:微信版本为7.0.5,小程序SDK为2.7.7
if (baseReq.type == 4) { if (baseReq.type == 4) {
// com.tencent.mm.opensdk.constants.ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX = 4 // com.tencent.mm.opensdk.constants.ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX = 4
if (WXAPiHandler.wxApiRegistered) { if (!WXAPiHandler.isCoolBoot) {
handleRequest(baseReq) handleRequest(baseReq)
startSpecifiedActivity(defaultFlutterActivityAction(activity), activity = activity) startSpecifiedActivity(defaultFlutterActivityAction(activity), activity = activity)
} else { } else {
...@@ -74,8 +74,9 @@ object FluwxRequestHandler { ...@@ -74,8 +74,9 @@ object FluwxRequestHandler {
fun onReq(baseReq: BaseReq, activity: Activity) { fun onReq(baseReq: BaseReq, activity: Activity) {
try { try {
val activityInfo = activity.packageManager.getActivityInfo(activity.componentName, PackageManager.GET_META_DATA) val packageManager = activity.packageManager
val defaultHandle = activityInfo.metaData.getBoolean("handleWeChatRequestByFluwx", true) var appInfo = packageManager.getApplicationInfo(activity.packageName,PackageManager.GET_META_DATA)
val defaultHandle = appInfo.metaData.getBoolean("handleWeChatRequestByFluwx", true)
if (defaultHandle) { if (defaultHandle) {
defaultOnReqDelegate(baseReq, activity) defaultOnReqDelegate(baseReq, activity)
} else { } else {
...@@ -101,5 +102,5 @@ object FluwxRequestHandler { ...@@ -101,5 +102,5 @@ object FluwxRequestHandler {
} }
} }
private fun defaultFlutterActivityAction(context: Context): String = "$context.packageName.FlutterActivity" private fun defaultFlutterActivityAction(context: Context): String = "${context.packageName}.FlutterActivity"
} }
\ No newline at end of file
...@@ -34,6 +34,14 @@ object WXAPiHandler { ...@@ -34,6 +34,14 @@ object WXAPiHandler {
val wxApiRegistered get() = registered val wxApiRegistered get() = registered
//是否为冷启动
private var coolBoot: Boolean = false
val isCoolBoot get() = coolBoot
fun setCoolBool(isCoolBoot : Boolean) {
coolBoot = isCoolBoot
}
fun setupWxApi(appId: String, context: Context, force: Boolean = true): Boolean { fun setupWxApi(appId: String, context: Context, force: Boolean = true): Boolean {
if (force || !registered) { if (force || !registered) {
setContext(context) setContext(context)
......
...@@ -17,6 +17,7 @@ package com.jarvan.fluwx.wxapi ...@@ -17,6 +17,7 @@ package com.jarvan.fluwx.wxapi
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import com.jarvan.fluwx.handlers.FluwxResponseHandler import com.jarvan.fluwx.handlers.FluwxResponseHandler
import com.jarvan.fluwx.handlers.FluwxRequestHandler import com.jarvan.fluwx.handlers.FluwxRequestHandler
...@@ -24,6 +25,7 @@ import com.jarvan.fluwx.handlers.WXAPiHandler ...@@ -24,6 +25,7 @@ import com.jarvan.fluwx.handlers.WXAPiHandler
import com.tencent.mm.opensdk.modelbase.BaseReq import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import io.flutter.Log
open class FluwxWXEntryActivity : Activity(), IWXAPIEventHandler { open class FluwxWXEntryActivity : Activity(), IWXAPIEventHandler {
...@@ -34,6 +36,17 @@ open class FluwxWXEntryActivity : Activity(), IWXAPIEventHandler { ...@@ -34,6 +36,17 @@ open class FluwxWXEntryActivity : Activity(), IWXAPIEventHandler {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
try { 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) WXAPiHandler.wxApi?.handleIntent(intent, this)
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
......
## 从H5启动app ## 从H5启动app
Fluwx 支持从`<wx-open-launch-app>`启动你的app, 并且支持传递`extInfo`给你的app. Fluwx 支持从`<wx-open-launch-app>`启动你的app, 并且支持传递`extInfo`给你的app.
对于Android来说,你要在`AndroidManifest.xml`中给你的宿主`Activty`加上一个标签: 对于Android来说,你要在`AndroidManifest.xml`中给你的`application`加上一个标签:
``` ```
<action android:name="${applicationId}.FlutterActivity" /> <action android:name="${applicationId}.FlutterActivity" />
``` ```
...@@ -14,7 +14,7 @@ Fluwx 支持从`<wx-open-launch-app>`启动你的app, 并且支持传递`extInfo ...@@ -14,7 +14,7 @@ Fluwx 支持从`<wx-open-launch-app>`启动你的app, 并且支持传递`extInfo
FluwxRequestHandler.handleRequestInfoFromIntent(intent) FluwxRequestHandler.handleRequestInfoFromIntent(intent)
} }
``` ```
如果你想自定义你的调用逻辑, 你需要在宿主Activity中加上`<meta-data>`: 如果你想自定义你的调用逻辑, 你需要在application中加上`<meta-data>`:
```xml ```xml
<meta-data <meta-data
android:name="handleWeChatRequestByFluwx" android:name="handleWeChatRequestByFluwx"
......
...@@ -10,6 +10,15 @@ ...@@ -10,6 +10,15 @@
android:name="io.flutter.app.FlutterApplication" android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="fluwx_example"> android:label="fluwx_example">
<meta-data
android:name="weChatAppId"
android:value="12345678" />
<meta-data
android:name="handleWeChatRequestByFluwx"
android:value="true" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
...@@ -23,9 +32,6 @@ ...@@ -23,9 +32,6 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<meta-data
android:name="handleWeChatRequestByFluwx"
android:value="true" />
</activity> </activity>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
......
name: fluwx name: fluwx
description: The capability of implementing WeChat SDKs in Flutter. With Fluwx, developers can use WeChatSDK easily, such as sharing, payment, lanuch mini program and etc. description: The capability of implementing WeChat SDKs in Flutter. With Fluwx, developers can use WeChatSDK easily, such as sharing, payment, lanuch mini program and etc.
version: 3.3.2 version: 3.3.3
homepage: https://github.com/JarvanMo/fluwx homepage: https://github.com/JarvanMo/fluwx
environment: environment:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论