gpt4 book ai didi

android - 尝试退出插件 webview 时,带有集成插件的 Cordova 应用程序在 webview 上崩溃(android 测试)

转载 作者:行者123 更新时间:2023-12-03 17:07:20 27 4
gpt4 key购买 nike

当我尝试从cordova上集成的cordova插件返回时遇到问题。当我尝试这样做时,应用程序崩溃了,我首先调试了 javascript,然后调试了 javascript 调用的 native 代码,这是使应用程序崩溃的指令。

Cordova .getActivity().finish();

这是 TestPlugin.java 在这个最全局化的环境中提交文件:

   if (action.equals("open")) {

try {
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(cordova.getActivity(),
PhemiumEnduserActivity.class);
cordova.getActivity().startActivity(intent);
cordova.getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
});
callback.success("");
} catch (final Exception e) {
callback.error(e.getMessage());
}

}
else if( action.equals("exit_app") ) {
try {
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
cordova.getActivity().finish();
}
});
callback.success("");
} catch (final Exception e) {
callback.error(e.getMessage());
}
}

当应用程序调用插件时,执行“打开”部分,当我单击后退按钮时,执行“exit_app”部分,然后在 Cordova .getActivity().finish(); 应用程序在 android studio 控制台上崩溃且没有错误。没有 webview 关闭的信号。我做错了什么?为什么会崩溃?

最佳答案

请发布完整的插件代码或存储库,但我认为是因为您尝试在另一个线程中完成 Activity ,或者 Activity 不再存在(getActivity 返回 null)。

你需要尝试这样的方式:

protected Activity mActivity;
....
else if( action.equals("exit_app") ) {
mActivity = cordova.getActivity();
try {
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
if(mActivity!=null)
mActivity.finish();
}
});
callback.success("");
} catch (final Exception e) {
callback.error(e.getMessage());
}
}

有关更多跟踪信息,请尝试在 Android Studio 中打开 android 项目并对其进行调试。

关于android - 尝试退出插件 webview 时,带有集成插件的 Cordova 应用程序在 webview 上崩溃(android 测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48292232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com