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

Merge pull request #361 from charleyzhu/master

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