Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在webview android studio中结合文件上载和连接检查_Java_Android_Webview_Upload_Connection - Fatal编程技术网

Java 在webview android studio中结合文件上载和连接检查

Java 在webview android studio中结合文件上载和连接检查,java,android,webview,upload,connection,Java,Android,Webview,Upload,Connection,我想在一个简单的Webview(android studio)中结合两件事: 1文件上传:我花了几天的时间才找到版本4的文件。我已经在那里了,文件上传工作 2-问题是-我想添加一个连接检查,这样当没有internet连接时,会出现一条消息,而不是加载默认错误页面。 我已尝试在此线程中实现解决方案: 也用 例如 到目前为止我拥有的代码:(用于在我的网页中上载文件) 封装lafs.test; 导入android.app.Activity; 导入android.app.AlertDialog; 导入a

我想在一个简单的Webview(android studio)中结合两件事:

1文件上传:我花了几天的时间才找到版本4的文件。我已经在那里了,文件上传工作

2-问题是-我想添加一个连接检查,这样当没有internet连接时,会出现一条消息,而不是加载默认错误页面。 我已尝试在此线程中实现解决方案: 也用 例如

到目前为止我拥有的代码:(用于在我的网页中上载文件)

封装lafs.test;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.res.Configuration;
导入android.graphics.Bitmap;
导入android.net.Uri;
导入android.os.Bundle;
导入android.webkit.ValueCallback;
导入android.webkit.WebChromeClient;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
公共类MainActivity扩展了活动{
网络视图;
private ValueCallback mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
@凌驾
ActivityResult上受保护的void(int请求代码、int结果代码、,
意图(意图){
if(requestCode==FILECHOOSER\u RESULTCODE)
{
if(null==mUploadMessage)返回;
Uri result=intent==null | | resultCode!=结果_确定?null
:intent.getData();
mUploadMessage.onReceiveValue(结果);
mUploadMessage=null;
}
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web=(WebView)findviewbyd(R.id.WebView);
web=新的WebView(此);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl(“http://www.mywebsiteurl.com");
setWebViewClient(新的myWebClient());
setWebChromeClient(新WebChromeClient()
{
public void openFileChooser(ValueCallback uploadMsg、字符串接受类型、字符串捕获){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
MainActivity.this.startActivityForResult(Intent.createChooser(i,“文件选择器”),
MainActivity.FILECHOOSER\u结果代码);
}
});
setContentView(web);
}
公共类myWebClient扩展了WebViewClient
{
@凌驾
public void onPageStarted(WebView视图、字符串url、位图favicon){
//TODO自动生成的方法存根
super.onPageStarted(视图、url、favicon);
}
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
//TODO自动生成的方法存根
view.loadUrl(url);
返回true;
}
@凌驾
公共void onPageFinished(WebView视图,字符串url){
//TODO自动生成的方法存根
super.onPageFinished(视图、url);
}
}
//flipscreen无法再次加载
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
}
}
有人能帮我吗?
谢谢

将示例中的类添加到您的项目中, 在活动顶部导入此类。 然后在onCreate()中使用添加的类所包含的静态函数

比如:

package lafs.test;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    WebView web;

    private ValueCallback<Uri> mUploadMessage;
    private final static int FILECHOOSER_RESULTCODE=1;

    @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;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        web = (WebView) findViewById(R.id.webview);


        web = new WebView(this);
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl("http://www.mywebsiteurl.com");
        web.setWebViewClient(new myWebClient());
        web.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 );

            }

        });


        setContentView(web);


    }

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);


        }
    }

    //flipscreen not loading again
    @Override
    public void onConfigurationChanged(Configuration newConfig){
        super.onConfigurationChanged(newConfig);
    }



}
Boolean connection = DetectConnection.checkInternetConnection(this);
if (connection){
    //init webView and redirect user to your upload page by the internet.
}