모바일에서는 갤러리 호출하는 방법은 참 쉽습니다.
하지만 내가 원하는방식은 웹뷰에서! 네이버창을 보다가 글을 쓰면서 사진을 첨부하고싶을때, 보이는것은 웹인데 단말기의 갤러리에서 이미지를 가져오고싶을때 사용합니다.
참고. 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);
}
이로써 모든 버전에서 갤러리 사진불러오기가 가능해졌다!
도움이되셨다면 손가락 한번 눌러주세요~
댓글 없음:
댓글 쓰기