【问题标题】:Crash in MobileFirst 7.1-based app when using cordova-plugin-android-fingerprint-auth使用 cordova-plugin-android-fingerprint-auth 时在基于 MobileFirst 7.1 的应用程序中崩溃
【发布时间】:2016-11-14 06:25:01
【问题描述】:

我在我的应用程序中使用cordova fingerprint auth plugin,但应用程序崩溃并在 logcat 中显示以下错误。

11-14 11:12:47.671:W/PluginManager(30565):线程警告:exec() 调用 FingerprintAuth.authenticate 阻塞了主线程 33 毫秒。 插件应该使用 CordovaInterface.getThreadPool()。

11-14 11:12:47.712: D/FingerprintAuthDialog(30565): disableBackup: 假 11-14 11:12:47.713: W/ResourceType(30565): 没有包标识符 当获取资源号 0x00000000 11-14 的值时 11:12:47.713:D/AndroidRuntime(30565):关闭 VM 11-14 11:12:47.716:E/AndroidRuntime(30565):致命异常:主要 11-14 11:12:47.716:E/AndroidRuntime(30565):进程:com.fingerPrint,PID: 30565 11-14 11:12:47.716:E/Android 运行时(30565): android.content.res.Resources$NotFoundException:资源 ID #0x0 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 android.content.res.Resources.getValue(Resources.java:1351) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.content.res.Resources.loadXmlResourceParser(Resources.java:2777) 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 android.content.res.Resources.getLayout(Resources.java:1165) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.view.LayoutInflater.inflate(LayoutInflater.java:421) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 com.fingerPrint.FingerprintAuthenticationDialogFragment.onCreateView(FingerprintAuthenticationDialogFragment.java:87) 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 android.app.Fragment.performCreateView(Fragment.java:2220) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973) 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 android.app.BackStackRecord.run(BackStackRecord.java:793) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1537) 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 android.app.FragmentManagerImpl$1.run(FragmentManager.java:482) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.os.Handler.handleCallback(Handler.java:746) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.os.Handler.dispatchMessage(Handler.java:95) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 android.os.Looper.loop(Looper.java:148) 11-14 11:12:47.716: E/AndroidRuntime(30565):在 android.app.ActivityThread.main(ActivityThread.java:5443) 11-14 11:12:47.716:E/AndroidRuntime(30565):在 java.lang.reflect.Method.invoke(本机方法)11-14 11:12:47.716: E/AndroidRuntime(30565):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 11-14 11:12:47.716: E/AndroidRuntime(30565): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565): Logger.java:471 中的 Logger$UncaughtExceptionHandler.uncaughtException :: 未捕获的异常 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565): android.content.res.Resources$NotFoundException:资源 ID #0x0 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.content.res.Resources.getValue(Resources.java:1351) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.content.res.Resources.loadXmlResourceParser(Resources.java:2777) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.content.res.Resources.getLayout(Resources.java:1165) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.view.LayoutInflater.inflate(LayoutInflater.java:421) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 com.fingerPrint.FingerprintAuthenticationDialogFragment.onCreateView(FingerprintAuthenticationDialogFragment.java:87) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.Fragment.performCreateView(Fragment.java:2220) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.BackStackRecord.run(BackStackRecord.java:793) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1537) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.FragmentManagerImpl$1.run(FragmentManager.java:482) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.os.Handler.handleCallback(Handler.java:746) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.os.Handler.dispatchMessage(Handler.java:95) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.os.Looper.loop(Looper.java:148) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 android.app.ActivityThread.main(ActivityThread.java:5443) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 java.lang.reflect.Method.invoke(本机方法)11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 11-14 11:12:47.718: E/com.worklight.common.Logger$UncaughtExceptionHandler(30565):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 11-14 11:12:47.723: D/com.worklight.wlclient.api.WLLifecycleHelper(30565): WLLifecycleHelper.java:109 中的 WLLifecycleHelper.logAppSession :: 试过 记录没有起始时间戳的应用崩溃

遵循的步骤:

  1. android/src/com/ 文件夹
  2. 添加到 config.xml

    <feature name="FingerprintAuth">
        <param name="android-package"  value="com.fingerPrint.FingerprintAuth"/>
    </feature> 
    
  3. common/js 文件夹中添加了 FingerprintAuth.js

  4. 每次部署到设备之前,在 cordova_plugins.js 中添加以下内容

    { "id": "FingerprintAuth", "file": "../js/FingerprintAuth.js", "clobbers": [ "FingerprintAuth" ] } 
    

5.在main.js文件中添加以下代码检查指纹认证

FingerprintAuth.isAvailable(function(result) {
        if (result.isAvailable) {
              var client_id = "Your client ID";
              var client_secret = "A very secret client secret (once per device)";
                if(result.hasEnrolledFingerprints){
                        FingerprintAuth.show({
                                clientId: client_id,
                                clientSecret: client_secret
                        }, function (result) {
                                if (result.withFingerprint) {


                                            alert("Authentication Success");


                                             //$location.path("singin");

                                } else if (result.withPassword) {
                                        alert("Authenticated with backup password");
                                }
                        }, function(error) {
                                console.log(error); // "Fingerprint authentication not available"
                        });
                }else{
                        alert("Fingerprint auth available, but no fingerprint registered on the device");
                }
        }
}, function(message) {
        alert("Cannot detect fingerprint device : "+ message);
});

【问题讨论】:

  • 这是使用 MobileFirst CLI 7.1 创建的 Cordova 应用程序,还是使用 MobileFirst Studio 7.1 创建的混合应用程序?
  • 在 MobileFirst Studio 7.1 中创建的混合应用,刚刚添加了 cordova-plugin
  • 插件是怎么添加的?混合应用程序并不真正支持 3rd 方 cordova 插件。
  • 后续步骤 1.Added plugin FingerprintAuth.java,FingerprintAuthenticationDialogFragment.java, FingerprintUiHelper.java 文件到android src/com/文件夹 2.Added 到 config.xml 3.将 FingerprintAuth.js 添加到 common/js 文件夹 4.每次添加 { "id": "FingerprintAuth" , "file": "../js/FingerprintAuth.js", "clobbers": [ "FingerprintAuth" ] } 在 cordova_plugins.js 中部署到设备之前。

标签: android cordova ibm-mobilefirst android-fingerprint-api


【解决方案1】:

我不确定这是否适用于混合应用程序。

但是请注意,根据插件页面,该插件需要 Android API 级别 23,该级别是最近才添加的。请首先确保升级到 MobileFirst Platform Foundation 7.1 的最新 iFix

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2017-09-17
    相关资源
    最近更新 更多