Я занимаюсь разработкой гибридного приложения с использованием Android, JS и HTML5.
Мой код выглядит следующим образом:
java:
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);
settings.setDatabaseEnabled(true);
settings.setDomStorageEnabled(true);
//To display the alert
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.setWebChromeClient(new WebChromeClient() {
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize,
long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 1);
}
});
//load html5 page
webView.loadUrl("file:///android_asset/html/index.html");
openCamera=new OpenCamera(webView,AvivaInsureActivity.this);
webView.addJavascriptInterface(openCamera,"camera");
}
public class OpenCamera {
private WebView mAppView;
private Activity context;
protected String _path;
private Bitmap bitmap;
public String getImagePath1() {
return imagePath1;
}
public void setImagePath1(String imagePath1) {
this.imagePath1 = imagePath1;
}
public String getImagePath2() {
return imagePath2;
}
public void setImagePath2(String imagePath2) {
this.imagePath2 = imagePath2;
}
public void startCameraActivity1(){
Date dt = new Date();
int date=dt.getDate();
int hours = dt.getHours();
int minutes = dt.getMinutes();
int seconds = dt.getSeconds();
String curTime = date+"_"+hours + "_"+minutes + "_"+ seconds;
imagePath1=Environment.getExternalStorageDirectory() +"/"+curTime+".jpg";
File file1 = new File(imagePath1);
Uri outputFileUri1 = Uri.fromFile( file1 );
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri1 );
context.startActivityForResult(intent,0);
}
аналогично camer2 метод.И js и html5:
<script type="text/javascript"><!--
function openCamera1(){
camera.startCameraActivity1();
var path1=camera.getImagePath1();
//alert(path1);
document.getElementById("image1").src=path1;
}
html:
<div><input type="submit" value="Submit" onclick="submitForm()" /><br />
</div>
<div><img id="image1" height="50" width="50" />" "<img id="image2"
height="50" width="50" /></div>
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//data.getExtras();
if (requestCode== 0 && resultCode == Activity.RESULT_OK){
String imagePath1 = "file://"+openCamera.getImagePath1();
System.out.println("Image Pathhhhhhhhhh11111111 :::::::::::: " + imagePath1);
...}
Здесь "Данные" являются нулевыми !!Как это возможно?Это правильно, что я здесь делаю ??
Проблема в том, что если я комментирую предупреждение (путь1) и предупреждение (путь2), я не могу загрузить изображение в тег img.Его отображение "?"вместо.После того, как я включаю оповещение или пытаюсь сделать снимок 3-4 раза, он показывает мне изображение!
Пожалуйста, помогите отладке.