java-使用CAMERA时应用程序崩溃-Android
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用CAMERA时应用程序崩溃-Android,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5252字,纯文字阅读大概需要8分钟。
内容图文
![java-使用CAMERA时应用程序崩溃-Android](/upload/InfoBanner/zyjiaocheng/675/a72332bd58d54e39a484d561bc9e40cc.jpg)
我编写了一个应拍照的应用程序,然后将其显示在屏幕上进行修改.
在eclipse模拟器上尝试使用时,相机无法正常工作,因此我在Galaxy Nexus智能手机上尝试使用.
但是,当在我的SP上运行该应用程序时,该应用程序将崩溃,表示它不幸停止了工作.
在执行应用程序时,这是确切发生的情况:
>我单击相机按钮,然后打开相机界面
>拍照后,我可以选择丢弃或打开它
>如果单击“丢弃”,应用程序将恢复正常使用
>如果我点击打开,应用程序如上所述崩溃
我在Google上搜索了一下,发现您需要使用硬件设备check here的权限,因此我创建了文件/etc/udev/rules.d/51-android.rules,其内容如下:
SUBSYSTEM==”USB”, ATTR{IDVENDOR}==”18d1″, MODE=”0666, “GROUP=”plugdev”
SUBSYSTEM==”USB”, ATTR{IDVENDOR}==”04e8″, MODE=”0666, “GROUP=”plugdev”
SUBSYSTEM==”USB”, ATTR{IDVENDOR}==”0bb4″, MODE=”0666, “GROUP=”plugdev”
但是我仍然无法使用相机.
这是我在清单文件中声明的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
这是我用来启动相机意图的代码:
//create new Intent
Intent cameraIntent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
//get something back from the activity we are starting
startActivityForResult( cameraIntent, CAMERA_PICTURE_REQUEST );
这是用于处理结果的代码:
public void onActivityResult( int requestCode, int resultCode, Intent imageReturnedIntent )
{
if( resultCode == RESULT_OK )
{
if( requestCode == GALLERY_PICTURE_REQUEST )
{
selectedImageUri = imageReturnedIntent.getData();
Log.d( TAG, selectedImageUri );
Intent intent = new Intent( DVAHLUI_SuperviseActivity.this, DVAHLUI_SelectImageContentActivity.class );
intent.setData( selectedImageUri );
startActivity( intent );
}
if( requestCode == CAMERA_PICTURE_REQUEST )
{
selectedImageUri = imageReturnedIntent.getData();
Log.d( TAG, selectedImageUri );
Intent intent = new Intent( DVAHLUI_SuperviseActivity.this, DVAHLUI_SelectImageContentActivity.class );
intent.setData( selectedImageUri );
startActivity( intent );
}
}
}
这是导致Java空指针异常的getPath()函数:
public String getPath( Uri uri )
{
String[] filePathColumn = { android.provider.MediaStore.Images.Media.DATA };
LINE 343 --> Cursor cursor = getContentResolver().query( uri, filePathColumn, null, null, null );
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndexOrThrow( filePathColumn[0] );
String filePath = cursor.getString( columnIndex );
cursor.close();
return filePath;
}
你能告诉我出什么事了吗?
关注发布日志:
E/AndroidRuntime(27859): FATAL EXCEPTION: main
E/AndroidRuntime(27859): java.lang.RuntimeException: Failure delivering result ResultInfo{who=supervise, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.DVA_HLUI/com.DVA_HLUI.DVAHLUI_TabModeActivity}: java.lang.NullPointerException
E/AndroidRuntime(27859): at android.app.ActivityThread.deliverResults(ActivityThread.java:3141)
E/AndroidRuntime(27859): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
E/AndroidRuntime(27859): at android.app.ActivityThread.access$1100(ActivityThread.java:130)
E/AndroidRuntime(27859): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
E/AndroidRuntime(27859): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(27859): at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime(27859): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(27859): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(27859): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(27859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(27859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(27859): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(27859): Caused by: java.lang.NullPointerException
E/AndroidRuntime(27859): at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1094)
E/AndroidRuntime(27859): at android.content.ContentResolver.query(ContentResolver.java:354)
E/AndroidRuntime(27859): at android.content.ContentResolver.query(ContentResolver.java:313)
E/AndroidRuntime(27859): at com.DVA_HLUI.DVAHLUI_SuperviseActivity.getPath(DVAHLUI_SuperviseActivity.java:343)
E/AndroidRuntime(27859): at com.DVA_HLUI.DVAHLUI_SuperviseActivity.onActivityResult(DVAHLUI_SuperviseActivity.java:312)
E/AndroidRuntime(27859): at android.app.ActivityGroup.dispatchActivityResult(ActivityGroup.java:122)
E/AndroidRuntime(27859): at android.app.ActivityThread.deliverResults(ActivityThread.java:3137)
E/AndroidRuntime(27859): ... 11 more
解决方法:
听起来很像,您似乎不允许系统自行更新是否已创建新的媒体文件.这就是为什么您的方法失败的原因.您可以手动创建映像文件路径,以便在文件树上拥有映像位置,也可以要求媒体服务运行更新.我总是创建自己的文件路径,因为较旧的电话需要使用媒体服务更新的时间更长,因此在这种情况下,您的方法将失败.
内容总结
以上是互联网集市为您收集整理的java-使用CAMERA时应用程序崩溃-Android全部内容,希望文章能够帮你解决java-使用CAMERA时应用程序崩溃-Android所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。