WebView를 통해 웹 사이트를로드 할 수있는 Android 애플리케이션을 작성해야합니다. 웹 사이트에 입력 값이 있습니다 (Type = FILE)
<form action="...">
<input type="file" name="myFile" value="" id="..."><
<input type="submit" value="submit"><
</form>
로드가 완료되면 애플리케이션은 특정 이미지를 사용하고 저장 경로를 통해 이미지를 업로드해야합니다.
String Path = "/storage/emulated/0/myimage.jpg"
이미 FileChooser-Dialog를 열려고했지만 작동하지만 파일 선택기가없는 솔루션이 필요합니다. "경로"-변수의 경로를 사용해야합니다. 나는 이것이 큰 보안 누출이 될 것이라는 것을 알고 있지만 이것에 대한 해결책이 있습니까? JavaScript를 통해 다이 입력 값을 변경할 수 있습니까? 도서관이 있을까요?
PS : 불법적 인 일이 아닙니다. 회사 앱에서 프로필 이미지를 생성하고 있으며 기존의 변경 불가능한 파일 형식의 입력을 통해 업로드해야합니다.
미리 감사합니다.
-
답변 # 1
-
답변 # 2
내 답변을 확인하십시오. 기본적으로해야 할 일은
WebChromeClient
를 재정의하는 것입니다. 그리고 그 방법openFileChooser
.class MyWebChromeClient extends WebChromeClient { // For 3.0+ Devices (Start) // onActivityResult attached before constructor protected void openFileChooser(ValueCallback uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); } // For Lollipop 5.0+ Devices @TargetApi(Build.VERSION_CODES.LOLLIPOP) public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { if (uploadMessage != null) { uploadMessage.onReceiveValue(null); uploadMessage = null; } uploadMessage = filePathCallback; Intent intent = fileChooserParams.createIntent(); try { startActivityForResult(intent, REQUEST_SELECT_FILE); } catch (ActivityNotFoundException e) { uploadMessage = null; Toast.makeText(WebLink.this, "Cannot Open File Chooser", Toast.LENGTH_LONG).show(); return false; } return true; } //For Android 4.1 only protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(Intent.createChooser(intent, "File Chooser"), FILECHOOSER_RESULTCODE); } protected void openFileChooser(ValueCallback<Uri> uploadMsg) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); } }
관련 자료
- multithreading - 지연없이 실행하면 (Android에서) 작업이 완료되지 않은 이유는 무엇입니까?
- 동일한 github 저장소에 여러 Android 프로젝트를 업로드하는 방법은 무엇입니까?
- web - WebView가없는 웹 사이트 용 기본 Android 애플리케이션
- c# - jQuery 및 ASPNET MVC를 사용하여 양식을 제출하지 않고 비동기 적으로 파일 업로드
- fido u2f - Android WebView 지원 WebAuthn?
- java - Android Studio에서 Volley로 깜박이지 않고 기능 데이터 표시
- java - Android 및 Retrofit을 사용하여 서버에 사진을 업로드하려면 어떻게해야합니까?
- java - STB 만 켜면 Android WebView가 너무 느리게 진행됩니다
- Android Studio 업데이트 후 미리보기 패널 공급자 (JavaFX WebView) 오류
- debugging - 케이블을 사용하지 않고 루팅되지 않은 Android 장치에 ADB 명령을 보내는 진정한 방법이 있습니까?
- node.js - 업로드하지 않고 S3 객체 트리거
- xamarin.forms - Xamarin 양식 Android WebView 비디오 전체 화면
- xamarin.android - Android 빌드를 내부 테스트에 업로드 할 수 없습니다
- express - Android Studio없이 로컬에서 Flutter 웹 앱을 실행하면 Firebase 오류가 발생합니다
- firebase - Android Studio없이 로컬에서 Flutter 웹 앱 실행
- java - Android WebView에서 북마크 추가를 활성화하는 방법
- Android 10 - android 10 - "활성화하지 않고 벨소리 볼륨"방해 금지 "에 대해 진동을 비활성화하는 방법
- java - WebView Android에 JavaScript를 포함하는 방법
- node.js - 미들웨어 기능없이 multer를 사용하여 S3에 업로드
- php - webview android에서 서버에서 로컬 HTML 페이지를 엽니 다
이것을 시도해보십시오 :
1) 파일의 URI를 가져옵니다.
<시간>2) 트리거
<시간>file chooser
3)
onShowFileChooser
재정의WebChromeClient
내부 이렇게 :여기
myURI
URI
입니다 파일을 확인하십시오.