提交 7b49a11b authored 作者: Charley's avatar Charley

通过url scheme方式传递冷启动参数

上级 58eeebf9
package com.jarvan.fluwx package com.jarvan.fluwx
import android.content.Intent
import android.util.Log
import androidx.annotation.NonNull import androidx.annotation.NonNull
import com.jarvan.fluwx.handlers.* import com.jarvan.fluwx.handlers.*
import com.tencent.mm.opensdk.modelbiz.SubscribeMessage import com.tencent.mm.opensdk.modelbiz.SubscribeMessage
...@@ -16,7 +18,7 @@ import io.flutter.plugin.common.MethodChannel.Result ...@@ -16,7 +18,7 @@ import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.plugin.common.PluginRegistry import io.flutter.plugin.common.PluginRegistry
/** FluwxPlugin */ /** FluwxPlugin */
class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware,PluginRegistry.NewIntentListener {
companion object { companion object {
...@@ -45,6 +47,14 @@ class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { ...@@ -45,6 +47,14 @@ class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
private var fluwxChannel: MethodChannel? = null private var fluwxChannel: MethodChannel? = null
private fun handelIntent(intent:Intent?){
val action = intent?.action
val dataString = intent?.dataString
if (Intent.ACTION_VIEW.equals(action)) {
extMsg = dataString
}
}
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
val channel = MethodChannel(flutterPluginBinding.binaryMessenger, "com.jarvanmo/fluwx") val channel = MethodChannel(flutterPluginBinding.binaryMessenger, "com.jarvanmo/fluwx")
channel.setMethodCallHandler(this) channel.setMethodCallHandler(this)
...@@ -84,10 +94,12 @@ class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { ...@@ -84,10 +94,12 @@ class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
shareHandler?.permissionHandler = PermissionHandler(binding.activity) shareHandler?.permissionHandler = PermissionHandler(binding.activity)
handelIntent(binding.activity.intent)
} }
override fun onAttachedToActivity(binding: ActivityPluginBinding) { override fun onAttachedToActivity(binding: ActivityPluginBinding) {
WXAPiHandler.setContext(binding.activity.applicationContext) WXAPiHandler.setContext(binding.activity.applicationContext)
handelIntent(binding.activity.intent)
shareHandler?.permissionHandler = PermissionHandler(binding.activity) shareHandler?.permissionHandler = PermissionHandler(binding.activity)
} }
...@@ -194,4 +206,9 @@ class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { ...@@ -194,4 +206,9 @@ class FluwxPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
} }
private fun openWXApp(result: MethodChannel.Result) = result.success(WXAPiHandler.wxApi?.openWXApp()) private fun openWXApp(result: MethodChannel.Result) = result.success(WXAPiHandler.wxApi?.openWXApp())
override fun onNewIntent(intent: Intent?): Boolean {
handelIntent(intent)
return false
}
} }
...@@ -19,13 +19,15 @@ import android.app.Activity ...@@ -19,13 +19,15 @@ import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.core.content.ContextCompat.startActivity
import com.jarvan.fluwx.FluwxPlugin import com.jarvan.fluwx.FluwxPlugin
import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX
import io.flutter.plugin.common.MethodChannel
import com.tencent.mm.opensdk.modelbase.BaseReq import com.tencent.mm.opensdk.modelbase.BaseReq
import java.lang.Exception import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX
import java.security.cert.Extension
object FluwxRequestHandler { object FluwxRequestHandler {
private const val KEY_FLUWX_REQUEST_INFO_BUNDLE = "KEY_FLUWX_REQUEST_INFO_BUNDLE" private const val KEY_FLUWX_REQUEST_INFO_BUNDLE = "KEY_FLUWX_REQUEST_INFO_BUNDLE"
...@@ -53,7 +55,6 @@ object FluwxRequestHandler { ...@@ -53,7 +55,6 @@ object FluwxRequestHandler {
val result = mapOf( val result = mapOf(
"extMsg" to req.message.messageExt "extMsg" to req.message.messageExt
) )
FluwxPlugin.extMsg = req.message.messageExt;
FluwxPlugin.callingChannel?.invokeMethod("onWXShowMessageFromWX", result) FluwxPlugin.callingChannel?.invokeMethod("onWXShowMessageFromWX", result)
} }
...@@ -66,9 +67,19 @@ object FluwxRequestHandler { ...@@ -66,9 +67,19 @@ object FluwxRequestHandler {
handleRequest(baseReq) handleRequest(baseReq)
startSpecifiedActivity(defaultFlutterActivityAction(activity), activity = activity) startSpecifiedActivity(defaultFlutterActivityAction(activity), activity = activity)
} else { } else {
startSpecifiedActivity(defaultFlutterActivityAction(activity), bundle = Bundle().apply { when (baseReq) {
baseReq.toBundle(this) is ShowMessageFromWX.Req -> {
}, bundleKey = KEY_FLUWX_REQUEST_INFO_BUNDLE, activity = activity) try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("wechatextmsg://${activity.packageName}/?extmsg=${baseReq.message.messageExt}"))
activity.startActivity(intent)
activity.finish()
WXAPiHandler.setCoolBool(false)
}catch (e:Exception) {
Log.i("fluwx","call scheme error:${e.toString()}")
}
}
}
} }
} }
} }
...@@ -76,7 +87,7 @@ object FluwxRequestHandler { ...@@ -76,7 +87,7 @@ object FluwxRequestHandler {
fun onReq(baseReq: BaseReq, activity: Activity) { fun onReq(baseReq: BaseReq, activity: Activity) {
try { try {
val packageManager = activity.packageManager val packageManager = activity.packageManager
var appInfo = packageManager.getApplicationInfo(activity.packageName,PackageManager.GET_META_DATA) var appInfo = packageManager.getApplicationInfo(activity.packageName, PackageManager.GET_META_DATA)
val defaultHandle = appInfo.metaData.getBoolean("handleWeChatRequestByFluwx", true) val defaultHandle = appInfo.metaData.getBoolean("handleWeChatRequestByFluwx", true)
if (defaultHandle) { if (defaultHandle) {
defaultOnReqDelegate(baseReq, activity) defaultOnReqDelegate(baseReq, activity)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论