Android startActivityForResult中出现空指针异常
我试图从HTML5和JavaScript中调用camera。我的代码如下。但我得到了空指针异常 主要活动: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
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匹配,但没有任何用处!!