Как отключить копирование, но включить вставку в WebView? - PullRequest
1 голос
/ 06 апреля 2020

Я использую WebView для отображения своего веб-сайта в своем мобильном Android приложении. Я отключил выделение текста в WebView, так как хочу отключить копирование.

На самом деле я sh разрешаю пользователю вставлять текст, но не копировать.

Как мне это сделать, пожалуйста?


    public class MainActivity extends AppCompatActivity {


    WebView webview;


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

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);

        webview = findViewById(R.id.webView);
        webview.setWebViewClient(new WebViewClient(){

            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                String host = Uri.parse(url).getHost();
                String domain = "www.google.fr";

                if (host.equals(domain)) {
                    // This is my website, so do not override; let my WebView load the page
                    return false;
                } else {
                    view.getContext().startActivity(
                            new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                    return true;
                }
            }


        });

        webview.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return true;
            }
        });
        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webview.loadUrl("https://www.google.fr");

    }

    @Override
    public void onBackPressed() {
        if (webview.canGoBack()) {
            webview.goBack();
        }
    }
}

1 Ответ

0 голосов
/ 06 апреля 2020

Как вы знаете, чтобы скопировать текст, вам нужно долго нажимать его, чтобы выбрать.

Поэтому, пожалуйста, добавьте longClickListener в веб-просмотр, который будет показывать что-либо еще при длинном щелчке вместо копирования текста.

mWebView.setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        return true;
    }
});
mWebView.setLongClickable(false);

Но это также отключит использование PASTE, чтобы вставить содержимое из буфера обмена. Я предлагаю добавить маленькую кнопку рядом с ней и добавить к ней onClickListener, который будет вставлять скопированный контент в любое место.

ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
String pasteData = "";
if (!(mClipboard.hasPrimaryClip())) {

} else if (!(mClipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))) {
} else {
    ClipData.Item item = mClipboard.getPrimaryClip().getItemAt(0);

    copiedText = item.getText().toString(); 
}
...