PhoneGap2.7.0调用拍照和相册时出现onActivityResult NullPointerException问题
2013-06-26 16:13
423 查看
最近一直在做native+phonegap,在调用拍照和相册时出NullPointerException,以下是我log stack
这个bug纠结我很久了,今天总算解决了...
在http://stackoverflow.com
上找了很久也没找到原因在那里,但上面的回答多多少少对我有一点帮助.最后还是自己慢慢看,经过调试一步步才测试原因所在,所以特别特别要记录一下,
以上如有解释不清楚,请谅解。。。。
因此问题我原先自己有单独写了一个小demo
此demo没有问题,可以运行
但是把里面拍照和相册代码整合就出现上面stack里面的信息
demo可以参考 见附件
本文出自 “军歌” 博客,请务必保留此出处http://xiajun.blog.51cto.com/4458543/1230110
06-26 15:43:31.661: E/AndroidRuntime(26585): FATAL EXCEPTION: main 06-26 15:43:31.661: E/AndroidRuntime(26585): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=34, result=-1, data=null} to activity {com.house.activity/com.house.activity.PersonalCenterActivity}: java.lang.NullPointerException 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.ActivityThread.deliverResults(ActivityThread.java:3162) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3205) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.ActivityThread.access$1100(ActivityThread.java:136) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.os.Handler.dispatchMessage(Handler.java:99) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.os.Looper.loop(Looper.java:137) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.ActivityThread.main(ActivityThread.java:4797) 06-26 15:43:31.661: E/AndroidRuntime(26585): at java.lang.reflect.Method.invokeNative(Native Method) 06-26 15:43:31.661: E/AndroidRuntime(26585): at java.lang.reflect.Method.invoke(Method.java:511) 06-26 15:43:31.661: E/AndroidRuntime(26585): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 06-26 15:43:31.661: E/AndroidRuntime(26585): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 06-26 15:43:31.661: E/AndroidRuntime(26585): at dalvik.system.NativeStart.main(Native Method) 06-26 15:43:31.661: E/AndroidRuntime(26585): Caused by: java.lang.NullPointerException 06-26 15:43:31.661: E/AndroidRuntime(26585): at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:838) 06-26 15:43:31.661: E/AndroidRuntime(26585): at com.house.activity.BaseActivity.onActivityResult(BaseActivity.java:80) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.Activity.dispatchActivityResult(Activity.java:5255) 06-26 15:43:31.661: E/AndroidRuntime(26585): at android.app.ActivityThread.deliverResults(ActivityThread.java:3158) 06-26 15:43:31.661: E/AndroidRuntime(26585): ... 11 more
这个bug纠结我很久了,今天总算解决了...
在http://stackoverflow.com
上找了很久也没找到原因在那里,但上面的回答多多少少对我有一点帮助.最后还是自己慢慢看,经过调试一步步才测试原因所在,所以特别特别要记录一下,
这里我主要贴一些重要代码 PersonalCenterActivity .java public class PersonalCenterActivity extends BaseActivity{ @Override public void onCreate(Bundle savedInstanceState) { cordovaWebView = (CordovaWebView) findViewById(R.id.cordovaWebView); cordovaWebView.loadUrl("file:///android_asset/www/add.html"); } } BaseActivity.java public class BaseActivity extends DroidGap { private final ExecutorService threadPool = Executors.newCachedThreadPool(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); HouseApp houseApp = (HouseApp) this.getActivity().getApplication(); houseApp.getInstance().pushActivity(this); } @Override public void onBackPressed() { super.onBackPressed(); HouseApp houseApp = (HouseApp) this.getActivity().getApplication(); houseApp.getInstance().popActivity(this); } @Override public void onDestroy() { super.onDestroy(); HouseApp houseApp = (HouseApp) this.getActivity().getApplication(); if(houseApp !=null){ houseApp.getInstance().popActivity(this); } } public Context getContext(){ return this; } @Override public Activity getActivity() { return this; } @Override public ExecutorService getThreadPool() { return threadPool; } //如果没有重写,cordova.exec()方法无法使用同样也会所nullpointerexectption @Override public Object onMessage(String str, Object state) { //Log.v(TAG, "&State = " + state); return null; } @Override public void setActivityResultCallback(CordovaPlugin plugin) { Log.v(TAG, "cordovaPlugin" + plugin.toString()); } //此方法如果没有重写,调用拍照和相册无响应 @Override public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) { Log.v(TAG, "command = " + command.toString() + "&intent = " + intent.toString() + "&requestCode = " + requestCode); super.startActivityForResult(command, intent, requestCode); } //此方法特别要注意,这也是拍照后回调图片结果发送到js的一个url ////此方法如果没有重写,调用拍照和相册回调成功/失败无url @Override public void onActivityResult(int arg0, int arg1, Intent arg2) { Log.v(TAG, "arg0=" + arg0 + "---arg1 = " + arg1 + "---arg2 = " + arg2); //出现nullPointerExcepotion原因就是它。 //为什么,因为你直接调用super。onActivityResult,回调成功后是进入super.onActivityResult方法处理结果 super.onActivityResult(arg0, arg1, arg2); //为什么要加 activityResultCallback原因在于你当前在Stack中的Activity(也就是html页面)回调成功结果是在当前activity中你重写的onActivityResult处理 super.activityResultCallback.onActivityResult(arg0, arg1, arg2); } }
以上如有解释不清楚,请谅解。。。。
因此问题我原先自己有单独写了一个小demo
此demo没有问题,可以运行
但是把里面拍照和相册代码整合就出现上面stack里面的信息
demo可以参考 见附件
本文出自 “军歌” 博客,请务必保留此出处http://xiajun.blog.51cto.com/4458543/1230110
相关文章推荐
- android 调用系统相机或者系统相册功能时,onActivityResult方法不执行问题的解决过程
- 关于相机拍照获取图片onActivityResult返回data 为null的问题
- 解决Android Studio 3.0.1 下使用ButterKnife 8.8.1版本出现 nullpointerexception 等异常问题
- 总结:调用startActivityForResult,onActivityResult无响应的问题
- android中调用findViewById时出现:java.lang.NullPointerException
- onActivityResult调用不到的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- android关于onActivityResult提前调用的问题
- 总结:调用startActivityForResult,onActivityResult无响应的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- tomcat6启动出现NullPointerException ReplicationValve.java:348问题的解决
- 关于调用系统照相机等,onActivityResult之后Activity被销毁问题解决
- onActivityResult被提前调用的问题和onActivityResult不被启动的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- Android调用系统自带的拍照功能出现Failure delivering result ResultInfo的问题
- 总结:调用startActivityForResult,onActivityResult无响应的问题
- 启动eclipse,都会出现该问题Refreshing external folders NullPointerException
- Fragment中 onActivityResult不响应 + 有关onActivityResult提前调用的问题
- <Opencv for Android 调试>加载XML模型,使用SVM.predict出现的NullPointerException问题