-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
插件集成 nfc 功能问题 #1298
Comments
这些系统api需要activity的,基本上都可以转调时传对应的container activity。对系统来说插件activity只是container activity持有的普通逻辑类。你可以仿照已有的transform把对NfcAdapter的调用hook下来,修改参数再调用。 至于你提到的插件自带的NfcAdapter类实现,似乎是不必要的。 如果你的NfcAdapter支持实现好了欢迎贡献代码。 |
@shifujun 感谢解答,目前采用的方案是 issues/596 中提到的宿主做一层封装,插件设置白名单依赖宿主可以解决 Activity 参数异常问题。现在遇到一个新问题插件中 onNewIntent 回调的 intent 中 Tag 为 null,插件单独运行可以读取标签数据,不知道是哪里的问题。 @OverRide private void handleNfcIntent(Intent intent) { |
@shifujun ShadowActivityDelegate 这里带有 nfc 扫描结果的 Intent 数据会被覆盖掉,应该是一个 bug 。 这样改不知道会不会有问题啊 val pluginExtras: Bundle? = intent.getBundleExtra(CM_EXTRAS_BUNDLE_KEY)
if (pluginExtras != null) {
intent.putExtra(CM_EXTRAS_BUNDLE_KEY, pluginExtras)
}
mPluginActivity.onNewIntent(intent) |
插件中集成 nfc 功能,报错信息如下:
java.lang.NoSuchMethodError: No virtual method enableForegroundDispatch(Lcom/tencent/shadow/core/runtime/ShadowActivity;Landroid/app/PendingIntent;[Landroid/content/IntentFilter;[[Ljava/lang/String;)V in class Landroid/nfc/NfcAdapter; or its super classes (declaration of 'android.nfc.NfcAdapter' appears in /system/framework/framework.jar!classes2.dex)
NfcAdapter 中的 enableForegroundDispatch 第一个参数是 Activity 类型,在插件的 dex 文件中看到 Activity 类型已修改为 ShadowActivity,但是插件运行起来后查看 NfcAdapter 类的是由 BootClassLoader 加载,不是由插件的 ClassLoader 加载的修改后的 NfcAdapter类,这样就导致方法参数异常。不知道有没有遇到类似问题的,有没有什么解决方案啊?
The text was updated successfully, but these errors were encountered: