启动本机相机活动

时间:2018-04-05 21:15:45

标签: java android tomtom

这是关于在TomTom设备上运行应用程序的问题,而不是在任意Android设备上运行。

在尝试启动本机Camera活动时,我在生产设备上有一个随机异常,我无法在我的开发TomTom上重现。这仅适用于TomTom设备;它不会发生在我的应用程序运行的任何其他Androids上。

我不会在这里做任何事情,只是启动一个原生相机Activity拍摄带有一些URI的照片,但随机它会使我的应用程序崩溃。我想至少有些TomTom开发者应该在TomTom本机Camera活动中遇到过这个问题。任何有助于解决此问题的帮助都非常受欢迎。

我的代码是这样的:

    final Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
    i.addFlags(FLAG_GRANT_WRITE_URI_PERMISSION);

    final List<ResolveInfo> resInfoList = packageManager.queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY);
    for (ResolveInfo resolveInfo : resInfoList)
    {
        String packageName = resolveInfo.activityInfo.packageName;
        activity.grantUriPermission(packageName, photoURI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    }

    activity.startActivityForResult(i, requestCode);

异常堆栈跟踪如下所示:

  

致命异常:java.lang.RuntimeException:Surface已经存在   锁定          在android.view.Surface.lockCanvas(Surface.java:242)          在android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2421)          在android.view.ViewRootImpl.draw(ViewRootImpl.java:2395)          在android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2239)          在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1872)          在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)          在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5481)          在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749)          在android.view.Choreographer.doCallbacks(Choreographer.java:562)          在android.view.Choreographer.doFrame(Choreographer.java:532)          在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)          在android.os.Handler.handleCallback(Handler.java:730)          在android.os.Handler.dispatchMessage(Handler.java:92)          在android.os.Looper.loop(Looper.java:137)          在android.app.ActivityThread.main(ActivityThread.java:5150)          at java.lang.reflect.Method.invokeNative(Method.java)          在java.lang.reflect.Method.invoke(Method.java:525)          在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:760)          在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)          在dalvik.system.NativeStart.main(NativeStart.java)

0 个答案:

没有答案