모바일에서는 갤러리 호출하는 방법은 참 쉽습니다.
하지만 내가 원하는방식은 웹뷰에서!   네이버창을 보다가 글을 쓰면서 사진을 첨부하고싶을때, 보이는것은 웹인데 단말기의 갤러리에서 이미지를 가져오고싶을때 사용합니다.
참고. web은 WebView입니다.
onCreate에 웹뷰에다가 다음 속성을 적용하구요.
web.setWebChromeClient(new WebChromeClient() {
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType)
  {
   mUploadMessage = uploadMsg;
   Intent i = new Intent(Intent.ACTION_GET_CONTENT);
   i.addCategory(Intent.CATEGORY_OPENABLE);
   i.setType("*/*");
   startActivityForResult(Intent.createChooser(i, "File Browser"), 0);
  }
 });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 // TODO Auto-generated method stub
 super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == 0) {
   if (null == mUploadMessage)
   return;
   Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
  mUploadMessage.onReceiveValue(result);
  mUploadMessage = null;
 }
}
와 같이 처리하시면 웹뷰에서도 갤러리에 접근해서 이미지를 가져와서 웹뷰의 첨부파일로 입력이 완료됩니다!
(참고로 이 소스는 허니콤3.0 이상부터 적용가능한 소스입니다)
추가
// For Android 4.1+   4.1 이상 젤리빈에서 사용할 수 있는 소스
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { 
openFileChooser(uploadMsg, "" );
}
 //  For Android < 3.0   3.0 미만에서 사용할 수 있는 소스
public void openFileChooser(ValueCallback<Uri> uploadMsg)
{
System.out.println("jsdflsaejflkjsaelofjweqopifjwpoifjopiwqejfp;oiwqwe;jfp;owqejfp;owqjopfwjep;ofjweop;fjwfj");
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
     MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Browser"), 0);
} 
이로써 모든 버전에서 갤러리 사진불러오기가 가능해졌다!
도움이되셨다면 손가락 한번 눌러주세요~
 
댓글 없음:
댓글 쓰기