有没有一种方法可以使用javascript在WebView中隐藏按钮?(A2HS)按钮

有没有一种方法可以使用javascript在WebView中隐藏按钮?(A2HS)按钮,javascript,android,button,webview,Javascript,Android,Button,Webview,我有一个WebView应用程序链接到我的店铺url,这里的问题是有一个按钮(添加到主屏幕)按钮,我想在我的WebView中隐藏该按钮类。我曾尝试在OnProgressChange方法中使用javascript隐藏该按钮,它可以工作,但是,当我单击类别按钮并按下主屏幕按钮或再次返回主屏幕时“添加到主屏幕按钮”再次出现。请有人帮助我或指导我如何完成此任务。 //WebView设置和配置 Wview=(WebView)findviewbyd(R.id.WebView); WebSettings We

我有一个WebView应用程序链接到我的店铺url,这里的问题是有一个按钮(添加到主屏幕)按钮,我想在我的WebView中隐藏该按钮类。我曾尝试在OnProgressChange方法中使用javascript隐藏该按钮,它可以工作,但是,当我单击类别按钮并按下主屏幕按钮或再次返回主屏幕时“添加到主屏幕按钮”再次出现。请有人帮助我或指导我如何完成此任务。

//WebView设置和配置
Wview=(WebView)findviewbyd(R.id.WebView);
WebSettings WebSettings=Wview.getSettings();
setJavaScriptEnabled(true);
setWebChromeClient(新的chromeClient());
setWebViewClient(新的myClient());
setJavaScriptCanOpenWindowsAutomatically(true);
Wview.loadUrl(homeUrl);
}
私有类myClient扩展了WebViewClient{
@凌驾
public void onPageStarted(WebView视图、字符串url、位图favicon){
super.onPageStarted(视图、url、favicon);
}
@可空
@凌驾
公共WebResourceResponse应InterceptRequest(WebView视图,字符串url){
返回super.shouldInterceptRequest(视图,url);
}
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
布尔值a=真;
if(url!=null&&url.startsWith(“whatsapp”)){
view.getContext().startActivity(新的意图(Intent.ACTION_视图,Uri.parse(url));
返回true;
}
else if(url.startsWith(“电话:”)){
Intent Intent=新的Intent(Intent.ACTION\u拨号,Uri.parse(url));
星触觉(意向);
}
else if(url.startsWith(“rate:”)){
最后一个字符串app_package=getPackageName();//从上下文或活动对象请求应用程序包名称
试一试{
startActivity(新意图(Intent.ACTION_视图,Uri.parse(“market://details?id=“+app_包”);
}捕获(ActivityNotFoundException anfe){
startActivity(新意图(Intent.ACTION_视图,Uri.parse(“https://play.google.com/store/apps/details?id=“+app_包”);
}
}
else if(url.startsWith(“共享:”)){
意向意向=新意向(意向.行动\发送);
intent.setType(“文本/普通”);
intent.putExtra(intent.EXTRA_主题,view.getTitle());
intent.putExtra(intent.EXTRA_TEXT,view.getTitle()+“\nVisit:”+(Uri.parse(url.toString()).replace(“share:”,”);
startActivity(Intent.createChooser(Intent,getString(R.string.share_w_friends));
}
else if(url.startsWith(“退出:”){
exitApp();
}//在android默认web浏览器中打开外部URL
else if(ext_url&&!hostname(url).equals(homeUrl)){
Wview(url、true、wError_计数器);
//否则返回false,表示没有特殊操作
}否则{
a=假;
}
返回a;
}
@凌驾
公共void onPageFinished(WebView视图,字符串url){
如果(!发生错误){
findviewbyd(R.id.welcome).setVisibility(View.GONE);
findViewById(R.id.webView).setVisibility(View.VISIBLE);
}
super.onPageFinished(视图、url);
}
@凌驾
接收到的公共void Dhttperror(WebView视图、WebResourceRequest请求、WebResourceResponse errorResponse){
super.onReceivedHttPeror(查看、请求、错误响应);
}
@凌驾
接收错误时公共无效(WebView视图、WebResourceRequest请求、WebResourceError错误){
ErrorOccursed=true;
findviewbyd(R.id.webView).setVisibility(View.go);
findviewbyd(R.id.welcome).setVisibility(View.VISIBLE);
//Intent Intent=新的Intent(getApplicationContext(),ErrorActivity.class);
//星触觉(意向);
}
}
//随机ID创建函数,可在每次重新加载webview时帮助获取新缓存
公共字符串随机_id(){
返回新的BigInteger(130,随机).toString(32);
}
//使用请求打开webview内的URL
void Wview(字符串url、布尔选项卡、int错误\u计数器){
如果(错误\u计数器>2){
wError_计数器=0;
exitApp();
}否则{
如果(选项卡){
如果(cTAB){
customtabsinent.Builder intentBuilder=新建customtabsinent.Builder();
intentBuilder.setToolbarColor(ContextCompat.getColor(this,R.color.colorPrimary));
setSecondaryToolbarColor(ContextCompat.getColor(this,R.color.colorPrimaryDark));
intentBuilder.setStartAnimations(这个,android.R.anim.slide\u在左,android.R.anim.slide\u在右);
intentBuilder.setExitAnimations(这个,android.R.anim.slide\u在左,android.R.anim.slide\u在右);
CustomTabsInt CustomTabsInt=intentBuilder.build();
试一试{
customtabsinent.launchUrl(MainActivity.this,Uri.parse(url));
}捕获(ActivityNotFounde异常){
意向意向=新意向(意向.行动\视图);
setData(Uri.parse(url));
星触觉(意向);
}
}否则{
意向意向=新意向(意向.行动\视图);
setData(Uri.parse(url));
星触觉(意向);
}
}否则{
if(url.contains(“?”){//检查url是否已经有查询参数并进行了适当的处理。
url+=“&”;
}否则{
url+=“?”;
}
url+=“rid=“+random_id();
Wview.loadUrl(url);
}
}
}
//获取主机名
公共静态字符串主机名(字符串url){
if(url==null | | url.length()==0){
返回“”;
}
int dslash=url.indexOf(“/”);
如果(dslash==-1){
dslash=0;
}否则{
  //WebView Settings and Configuration
    Wview = (WebView) findViewById(R.id.webView);
    WebSettings webSettings = Wview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    Wview.setWebChromeClient(new chromeClient());
    Wview.setWebViewClient(new myClient());
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    Wview.loadUrl(homeUrl);

}

private class myClient extends WebViewClient {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Nullable
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        return super.shouldInterceptRequest(view, url);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        boolean a = true;
        if (url !=null && url.startsWith("whatsapp")){
            view.getContext().startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(url)));
            return true;
        }
        else if (url.startsWith("tel:")) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            startActivity(intent);
        }
        else if (url.startsWith("rate:")) {
            final String app_package = getPackageName(); //requesting app package name from Context or Activity object
            try {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + app_package)));
            } catch (ActivityNotFoundException anfe) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + app_package)));
            }

        }
        else if (url.startsWith("share:")) {
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_SUBJECT, view.getTitle());
            intent.putExtra(Intent.EXTRA_TEXT, view.getTitle()+"\nVisit: "+(Uri.parse(url).toString()).replace("share:",""));
            startActivity(Intent.createChooser(intent, getString(R.string.share_w_friends)));
        }
         else if (url.startsWith("exit:")) {
          exitApp();
    }// opening external URLs in android default web browser
     else if (ext_url && !hostname(url).equals(homeUrl)) {
        Wview(url,true, wError_counter);
            // else return false for no special action
        } else {
            a = false;
        }
        return a;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        if(!errorOccured){
            findViewById(R.id.welcome).setVisibility(View.GONE);
            findViewById(R.id.webView).setVisibility(View.VISIBLE);

        }
        super.onPageFinished(view, url);
    }
    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {

        super.onReceivedHttpError(view, request, errorResponse);
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        errorOccured=true;
        findViewById(R.id.webView).setVisibility(View.GONE);
        findViewById(R.id.welcome).setVisibility(View.VISIBLE);
        //Intent intent = new Intent(getApplicationContext(), ErrorActivity.class);
       // startActivity(intent);
    }


}

//Random ID creation function to help get fresh cache every-time webview reloaded
public String random_id() {
    return new BigInteger(130, random).toString(32);
}

//Opening URLs inside webview with request
void Wview(String url, Boolean tab, int error_counter) {
    if(error_counter > 2){
        wError_counter = 0;
        exitApp();
    }else {
        if(tab){
            if(cTAB) {
                CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
                intentBuilder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary));
                intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));
                intentBuilder.setStartAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
                intentBuilder.setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
                CustomTabsIntent customTabsIntent = intentBuilder.build();
                try {
                    customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
                } catch (ActivityNotFoundException e) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(url));
                    startActivity(intent);
                }
            }else{
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);
            }
        } else {
            if (url.contains("?")) { // check to see whether the url already has query parameters and handle appropriately.
                url += "&";
            } else {
                url += "?";
            }
            url += "rid=" + random_id();
            Wview.loadUrl(url);
        }
    }
}


//Getting host name
public static String hostname(String url){
    if (url == null || url.length() == 0) {
        return "";
    }
    int dslash = url.indexOf("//");
    if (dslash == -1) {
        dslash = 0;
    } else {
        dslash += 2;
    }
    int end = url.indexOf('/', dslash);
    end = end >= 0 ? end : url.length();
    int port = url.indexOf(':', dslash);
    end = (port > 0 && port < end) ? port : end;
    Log.w("URL Host: ",url.substring(dslash, end));
    return url.substring(dslash, end);
}
private void exitApp() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}
// Creating exit dialogue
public void ask_exit(){
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    builder.setTitle(getString(R.string.exit_title));
    builder.setMessage(getString(R.string.exit_subtitle));
    builder.setCancelable(true);

    // Action if user selects 'yes'
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            finish();
        }
    });

    // Actions if user selects 'no'
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
        }
    });

    // Create the alert dialog using alert dialog builder
    AlertDialog dialog = builder.create();

    // display the dialog when user press back button
    dialog.show();
}

@Override
public void onBackPressed() {
    if (Wview.canGoBack()) {
        Wview.goBack();
    } else if (ask_ExitDial) {
        ask_exit();
    } else {
        super.onBackPressed();
        this.finish();
    }
}

private class chromeClient extends WebChromeClient {

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        Wview.loadUrl("javascript:(function() { " +
                "document.getElementsByClassName('sc-iQKALj cdqULD border border-gray-dae')[0].style.display='none'; " +
                "})()");
        super.onProgressChanged(view, newProgress);
    }

}

private class touchlistener implements View.OnTouchListener {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        WebView.HitTestResult hitTestResult=((WebView)view).getHitTestResult();
        hitResult=true;
        return false;
    }
}
}
private class myClient extends WebViewClient {
    ...
    @Nullable
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        Wview.evaluateJavascript("javascript:(function() { " +
                            "document.getElementsByClassName('sc-iQKALj cdqULD border border-gray-dae')[0].style.display='none'; " +
                            "})()");
        return super.shouldInterceptRequest(view, url);
    }
    ...
}
public void onBackPressed() {
    if (Wview.canGoBack()) {
        Wview.goBack();
        Wview.evaluateJavascript("javascript:(function() { " +
                            "document.getElementsByClassName('sc-iQKALj cdqULD border border-gray-dae')[0].style.display='none'; " +
                            "})()");
    } else if (ask_ExitDial) {
        ask_exit();
    } else {
        super.onBackPressed();
        this.finish();
    }
}

Wview.setOnKeyListener((View.OnKeyListener) (v, keyCode, event) -> {
            if (event.getAction() != KeyEvent.ACTION_DOWN)
                return true;
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (Wview.canGoBack()) {
                    Wview.goBack();
                    Wview.evaluateJavascript("javascript:(function() { " +
                            "document.getElementsByClassName('sc-iQKALj cdqULD border border-gray-dae')[0].style.display='none'; " +
                            "})()");
                } else {
                    ((Activity) this).onBackPressed();
                }
                return true;
            }
            return false;
        });