Android startActivityForResult中出现空指针异常

Android startActivityForResult中出现空指针异常,android,webview,Android,Webview,我试图从HTML5和JavaScript中调用camera。我的代码如下。但我得到了空指针异常 主要活动: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView webview=(WebView)findViewByI

我试图从HTML5和JavaScript中调用camera。我的代码如下。但我得到了空指针异常

主要活动:

 public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            WebView webview=(WebView)findViewById(R.id.webkitWebView1); 
            WebSettings settings = webview.getSettings();  
            settings.setJavaScriptEnabled(true);   
            //load html5 page  
            webview.loadUrl("file:///android_asset/www/html/opencamera.html");  

            openCamera=new OpenCamera();  
            webview.addJavascriptInterface(openCamera,"camera");  

        }  

        @Override   
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {   
            if (requestCode== 0 && resultCode == Activity.RESULT_OK){   
                System.out.println("Done");  
            }  
        }  
摄像机呼叫:

public class OpenCamera extends Activity {  

    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
    }  

    public void startCameraActivity(){  
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );  
        startActivityForResult(intent,0);  
    }  

}  
html页面:

 <!DOCTYPE HTML>  
    <html>  
    <head>  
    <script type="text/javascript">  
    function openCamera(){  
        //alert("cameras");  
        camera.startCameraActivity();  
    }  
    </script>  


    <title>Welcome</title>  
    </head>  
    <body>  
    Hello World!!!  
    <br/>  
    <button type="button" onclick="openCamera()">Capture Image</button>  
    </body>  
    </html>  

您应该在清单文件中具有适当的意图过滤器。这就是您获得异常的原因

您应该在清单文件中具有适当的意图过滤器。这就是您出现异常的原因

启动相机时请尝试一下

 Intent intent = new Intent("com.your.package.TAKE_PICTURE");  
 startActivityForResult(intent,0); 

 <activity android:name="OpenCamera" android:label="@string/app_name"> 
      <intent-filter>    
            <action android:name="com.your.package.TAKE_PICTURE" /> 
            <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
 </activity> 
Intent Intent=newintent(“com.your.package.TAKE_PICTURE”);
startActivityForResult(意向,0);

启动相机时尝试一下

 Intent intent = new Intent("com.your.package.TAKE_PICTURE");  
 startActivityForResult(intent,0); 

 <activity android:name="OpenCamera" android:label="@string/app_name"> 
      <intent-filter>    
            <action android:name="com.your.package.TAKE_PICTURE" /> 
            <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
 </activity> 
Intent Intent=newintent(“com.your.package.TAKE_PICTURE”);
startActivityForResult(意向,0);

您正在从
OpenCamera
活动启动
Camera活动,而该活动尚未启动(根据android启动
活动的方式),因此
OpenCamera
活动的上下文为空,这就是为什么您的
上下文
在当时是
null
,并导致
NullPointerException

解决方法:

将上下文传递给函数
startCameraActivity()
as

public void startCameraActivity(Context con){  
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );  
        con.startActivityForResult(intent,0);  
}
将上下文传递到
WebView

webview.addJavascriptInterface(this,"context");
在你的剧本里

<script type="text/javascript">  
    function openCamera(){   
        camera.startCameraActivity(context);  
    }  
</script>

函数openCamera(){
照相机.启动照相机活动(上下文);
}  

OpenCamera
不必是
活动

您正在从
OpenCamera
活动启动
但尚未启动的活动(根据android启动
活动的方式
),因此
OpenCamera
活动的上下文为空,这就是为什么您的
上下文
在当时是
null
,并导致
NullPointerException

解决方法:

将上下文传递给函数
startCameraActivity()
as

public void startCameraActivity(Context con){  
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );  
        con.startActivityForResult(intent,0);  
}
将上下文传递到
WebView

webview.addJavascriptInterface(this,"context");
在你的剧本里

<script type="text/javascript">  
    function openCamera(){   
        camera.startCameraActivity(context);  
    }  
</script>

函数openCamera(){
照相机.启动照相机活动(上下文);
}  

OpenCamera
不必是
活动

哪里有空指针异常?你能发布你的日志跟踪吗??如果一开始出现空指针,请检查您的webview是否在主布局中使用了webview。是否可以提供stacktrace?您的目标是在活动启动时打开相机吗?是否确实可以在类中定义onActivityResult(…),而不是在您调用startActivityForResult(…)的类中定义onActivityResult(…)??我打赌,你可以像wise一样使用它。单击按钮(html5),javascript函数应该调用OpenCamera活动中的startCamera方法,相机应该捕获图片。你从哪里得到空指针异常?你能发布你的日志跟踪吗??如果一开始出现空指针,请检查您的webview是否在主布局中使用了webview。是否可以提供stacktrace?您的目标是在活动启动时打开相机吗?是否确实可以在类中定义onActivityResult(…),而不是在您调用startActivityForResult(…)的类中定义onActivityResult(…)??我打赌,你可以像wise一样使用它。单击按钮(html5),javascript函数应该调用OpenCamera活动中的startCamera方法,相机应该捕获图片。我不明白你的意思。你能简单解释一下吗?这就是他说的意图过滤器的意思。应该与我添加的android.provider.MediaStore.ACTION\u IMAGE\u Capture匹配,但没有任何用处!!我不明白你的意思。你能简单解释一下吗?这就是他说的意图过滤器的意思。应该与我添加的android.provider.MediaStore.ACTION\u IMAGE\u Capture匹配,但没有任何用处!!