2013-07-31 2 views
2

Моего приложения webbased и нужно загружать фотографии, сайта есть кнопка ввода файла, я сделал это работать с этимЗагрузить фото из галереи или взять с камеры в WebView

wv = new WebView(this); 
wv.setWebViewClient(new WebViewClient()); 
wv.getSettings().setJavaScriptEnabled(true); 
wv.getSettings().setAllowFileAccess(true); 

wv.setWebChromeClient(new WebChromeClient() 
{  
     public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){ 
       mUploadMessage = uploadMsg; 
       Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
       i.addCategory(Intent.CATEGORY_OPENABLE); 
       i.setType("image/*"); 
       MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE); 

} 

но он показывает только галерею, чтобы выбрать фотографии, мне нужно взять с камеры одновременно.

я попытался это решение Upload camera photo and filechooser from webview INPUT field, но его только открытие камеры, не загружая отснятой фотографии

ответ

0

В вашем примере

wv.setWebViewClient(new WebViewClient() {  
    public boolean shouldOverrideUrlLoading(WebView v, String url) { 
    if (url.startsWith("testzapp:")) { 
     //do whatever action you had intended 
    } 
    } 
} 
+0

я проверю сейчас * * Я думаю, что это для родных приложений. Мне нужно это в webchromeclient – Alper

+0

make div, который показывает это изображение. при щелчке этого div возвращают огонь по ссылке link/url в html. и обрабатывать эту ссылку в WebView Client. Следующая вещь может помочь вам wv.setWebViewClient (новый WebViewClient() { public boolean shouldOverrideUrlLoading (WebView v, String url) {if (url.startsWith ("testzapp:")) {} –

+0

Это то, что я сделал в своем коде в случае, если условие i проверяет, что url, который уволен из этой ссылки, - это то, что я хочу, тогда я беру соответствующее действие. В вашем случае вы пишете код, чтобы получить услугу камеры в этом условии, и напишите код на своей веб-странице, чтобы загрузить это image –

0

здесь мое решение

if (url.startsWith("xxx")) { 
       String[] falid = url.split(":"); 
       falidi = Integer.parseInt(falid[1]); 
       Intent intent = new Intent(
         "android.media.action.IMAGE_CAPTURE"); 
       startActivityForResult(intent, TAKE_PICTURE); 
       return true; 
      } 


public void onActivityResult(int requestCode, int resultCode, 
     final Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == TAKE_PICTURE) { 
      try { 
       Bitmap photo = (Bitmap) data.getExtras().get("data"); 
       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       photo.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 
       Random randomGenerator = new Random(); 
       randomGenerator.nextInt(); 
       newimagename = falidi + "_" + randomGenerator.nextInt() 
         + ".jpg"; 
       File f = new File(Environment.getExternalStorageDirectory() 
         + File.separator + newimagename); 
       try { 
        f.createNewFile(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       // write the bytes in file 

       FileOutputStream fo = null; 
       try { 
        fo = new FileOutputStream(f.getAbsoluteFile()); 
       } catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       try { 
        fo.write(bytes.toByteArray()); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       String uri = f.getAbsolutePath(); 
       // this is the url that where you are saved the 
       // image 

       File fx = new File(uri); 

       Bitmap bitmap = BitmapFactory.decodeFile(fx.getPath()); 
       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 30, stream); 
       byte[] byte_arr = stream.toByteArray(); 
       String image_str = Base64.encodeToString(byte_arr, 
         Base64.DEFAULT); 

       client = new DefaultHttpClient(); 
       HttpPost post = new HttpPost(
         "http://www.xxx.com/android/library/image.php?name=" 
           + newimagename); 
       List<NameValuePair> pairs = new ArrayList<NameValuePair>(); 
       pairs.add(new BasicNameValuePair("image", image_str)); 
       try { 
        post.setEntity(new UrlEncodedFormEntity(pairs)); 
       } catch (UnsupportedEncodingException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       // Candemir 
       new ResultTask().execute(new HttpPost[] { post }); 
       // Candemir 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    } 
} 
Смежные вопросы