Android 웹보기를 사용하여 웹 사이트에 내 이미지를 업로드 할 수 없습니다.

아민

웹 사이트에 액세스하기 위해 Android webview 앱을 사용하고 있습니다. 제출 섹션에는 이미지 업로드 (사용자에게만 표시됨)라는 버튼이 있습니다. Google 크롬 또는 내 PC에서 이미지를 업로드하려고 할 때 문제가 없지만 webView 앱에서 이미지를 업로드하려고 할 때 업로드 버튼을 클릭하면 아무 일도 일어나지 않습니다. 권한을 받아야한다는 것을 알고 있으며 필요한 모든 것을 이미 얻었습니다. 여기에 내 코드가 있지만 어디에서 잘못되었는지 모르겠습니다. 도와 주셔서 감사합니다.

public class SubmitProperty extends AppCompatActivity {
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_submit);
    WebView webView = (WebView) findViewById(R.id.webView);
    webView.setWebViewClient(new myWebClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.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/*");
            SubmitProperty.this.startActivityForResult(Intent.createChooser(i, "File Chooser"),FILECHOOSER_RESULTCODE);
        }
    });
    webView.getSettings().setDisplayZoomControls(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.loadUrl("http://asemanhome.com/submit-property/");
}
public class myWebClient extends WebViewClient
{
    @Override

    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

    if(requestCode==FILECHOOSER_RESULTCODE){
        if (null == mUploadMessage) return;
        Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
        mUploadMessage.onReceiveValue(result);
        mUploadMessage = null;
    }
}

} 이에 대한 권한 :

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />

API 25 및 minversion 16을 사용하고 있습니다.

파벨 폴리

며칠 전에 같은 문제가 발생했습니다.

전역 변수 추가

private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
public ValueCallback<Uri[]> uploadMessage;

이 코드 추가 onCreate

webView.setWebChromeClient(new WebChromeClient(){

        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
        {
            if (uploadMessage != null) {
                uploadMessage.onReceiveValue(null);
                uploadMessage = null;
            }

            uploadMessage = filePathCallback;

            Intent intent = fileChooserParams.createIntent();
            try
            {
                startActivityForResult(intent, 100);
            } catch (ActivityNotFoundException e)
            {
                uploadMessage = null;
                Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
                return false;
            }
            return true;
        }

오버라이드 onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent intent) {

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        if (requestCode == 100)
        {
            if (uploadMessage == null)
                return;
            uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
            uploadMessage = null;
        }
    }
    else if (requestCode == FILECHOOSER_RESULTCODE)
    {
        if (null == mUploadMessage)
            return;

        Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
        mUploadMessage.onReceiveValue(result);
        mUploadMessage = null;
    }
    else
        Toast.makeText(getApplicationContext(), "Failed to Upload Image", Toast.LENGTH_LONG).show();
}

참고 : 이것은 Android 5.0 이상에서 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

웹보기 Android에 큰 이미지를로드 할 수 없습니다.

분류에서Dev

내 웹 사이트를 Netlify에 배포 할 수 없습니다.

분류에서Dev

Ubuntu에서 오프라인보기 용 웹 사이트를 다운로드 할 수 없습니까?

분류에서Dev

내 웹 사이트를 호스트에 업로드 할 때 왜 찾을 수 없습니까?

분류에서Dev

wget을 사용하여 웹 사이트에 로그인 할 수 없습니다.

분류에서Dev

PHP 코드로 웹 페이지에 이미지를 업로드하고 표시 할 수 없습니다.

분류에서Dev

셀레늄 웹 드라이버를 사용하여 "찾아보기"버튼을 클릭 할 수 없습니다.

분류에서Dev

글라이드를 사용하여 이미지보기에서 이미지를로드 할 수 없습니다.

분류에서Dev

웹보기에 Google지도를로드 할 수 없습니다.

분류에서Dev

웹보기에 Google지도를로드 할 수 없습니다.

분류에서Dev

Selenium 웹 드라이버를 사용하여 파일을 업로드 할 수 없습니다.

분류에서Dev

내 웹보기 Android 애플리케이션에서 Polymer 프로젝트를 어떻게 사용할 수 있습니까?

분류에서Dev

웹 페이지를 사용하여 PHP로 터미널에 정보를 입력 할 수 있습니까?

분류에서Dev

Git-내 웹 사이트에 연결할 수 없습니다

분류에서Dev

Google Search Console 또는 PageSpeedInsights를 사용하여 내 웹 사이트를로드하거나 크롤링 할 수 없습니다.

분류에서Dev

Tomcat 8은 웹 사이트를로드 할 수 없습니다

분류에서Dev

로컬 웹 페이지 / 웹 사이트를 표시 할 수 없습니다.

분류에서Dev

Wget을 사용하여 전체 웹 사이트를 다운로드 할 수 없습니다.

분류에서Dev

내 웹 사이트에서 다른 언어로 텍스트를 표시 할 수 없습니다.

분류에서Dev

Python을 사용하여 웹 사이트에서 파일을 다운로드 할 수 없습니다.

분류에서Dev

Tomcat을 사용하여 내 웹 사이트에 액세스 할 수 없습니다.

분류에서Dev

Scrapy Spider는 xpath를 사용하여 웹 페이지의 내용을 추출 할 수 없습니다.

분류에서Dev

HTML CODE의 iframe에서 웹 사이트를로드 할 수 없습니다.

분류에서Dev

Ubuntu 18.04.2에서 일부 웹 사이트를로드 할 수 없습니다.

분류에서Dev

인증이 필요한 프록시 뒤에 있기 때문에 Python 스크립트를 사용하여 웹 사이트에 로그인 할 수 없습니다.

분류에서Dev

Httprequest 라이브러리를 사용하여 서버에 이미지를 업로드 할 수 없습니다.

분류에서Dev

내 웹 사이트를 업로드하려고하는데 서버를 찾을 수 없습니다.

분류에서Dev

HTML 위치 정보를 사용하여 내가있는 웹 사이트를 업데이트 할 수 있습니까?

분류에서Dev

Selenium을 사용하여 웹 사이트를 클릭 할 수 없습니다.

Related 관련 기사

  1. 1

    웹보기 Android에 큰 이미지를로드 할 수 없습니다.

  2. 2

    내 웹 사이트를 Netlify에 배포 할 수 없습니다.

  3. 3

    Ubuntu에서 오프라인보기 용 웹 사이트를 다운로드 할 수 없습니까?

  4. 4

    내 웹 사이트를 호스트에 업로드 할 때 왜 찾을 수 없습니까?

  5. 5

    wget을 사용하여 웹 사이트에 로그인 할 수 없습니다.

  6. 6

    PHP 코드로 웹 페이지에 이미지를 업로드하고 표시 할 수 없습니다.

  7. 7

    셀레늄 웹 드라이버를 사용하여 "찾아보기"버튼을 클릭 할 수 없습니다.

  8. 8

    글라이드를 사용하여 이미지보기에서 이미지를로드 할 수 없습니다.

  9. 9

    웹보기에 Google지도를로드 할 수 없습니다.

  10. 10

    웹보기에 Google지도를로드 할 수 없습니다.

  11. 11

    Selenium 웹 드라이버를 사용하여 파일을 업로드 할 수 없습니다.

  12. 12

    내 웹보기 Android 애플리케이션에서 Polymer 프로젝트를 어떻게 사용할 수 있습니까?

  13. 13

    웹 페이지를 사용하여 PHP로 터미널에 정보를 입력 할 수 있습니까?

  14. 14

    Git-내 웹 사이트에 연결할 수 없습니다

  15. 15

    Google Search Console 또는 PageSpeedInsights를 사용하여 내 웹 사이트를로드하거나 크롤링 할 수 없습니다.

  16. 16

    Tomcat 8은 웹 사이트를로드 할 수 없습니다

  17. 17

    로컬 웹 페이지 / 웹 사이트를 표시 할 수 없습니다.

  18. 18

    Wget을 사용하여 전체 웹 사이트를 다운로드 할 수 없습니다.

  19. 19

    내 웹 사이트에서 다른 언어로 텍스트를 표시 할 수 없습니다.

  20. 20

    Python을 사용하여 웹 사이트에서 파일을 다운로드 할 수 없습니다.

  21. 21

    Tomcat을 사용하여 내 웹 사이트에 액세스 할 수 없습니다.

  22. 22

    Scrapy Spider는 xpath를 사용하여 웹 페이지의 내용을 추출 할 수 없습니다.

  23. 23

    HTML CODE의 iframe에서 웹 사이트를로드 할 수 없습니다.

  24. 24

    Ubuntu 18.04.2에서 일부 웹 사이트를로드 할 수 없습니다.

  25. 25

    인증이 필요한 프록시 뒤에 있기 때문에 Python 스크립트를 사용하여 웹 사이트에 로그인 할 수 없습니다.

  26. 26

    Httprequest 라이브러리를 사용하여 서버에 이미지를 업로드 할 수 없습니다.

  27. 27

    내 웹 사이트를 업로드하려고하는데 서버를 찾을 수 없습니다.

  28. 28

    HTML 위치 정보를 사용하여 내가있는 웹 사이트를 업데이트 할 수 있습니까?

  29. 29

    Selenium을 사용하여 웹 사이트를 클릭 할 수 없습니다.

뜨겁다태그

보관