Пользователь нажимает кнопку изображения, чтобы открыть URL без появления нового окна - PullRequest
0 голосов
/ 09 апреля 2019

Как мне сделать так, чтобы пользователь нажимал кнопку изображения и нажимала URL-ссылку, не открывая новое окно?

private class HandleClick implements View.OnClickListener {
      public void onClick(View arg0) {




        if(arg0.getId()==R.id.imageButton){
            ((TextView) findViewById(R.id.textView2)).setText("Pressed: " + ++howManyClicks1);
            Uri uri = Uri.parse("https://abr.se/happyeno/?get=happyeno_svar_put&svar_id=1");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);

        }
        else if (arg0.getId()==R.id.imageButton1){
            ((TextView) findViewById(R.id.textView3)).setText("Pressed: " + ++howManyClicks2);
            Uri uri = Uri.parse("https://abr.se/happyeno/?get=happyeno_svar_put&svar_id=2");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
        else if (arg0.getId()==R.id.imageButton2){
            ((TextView) findViewById(R.id.textView5)).setText("Pressed: " + ++howManyClicks3);
            Uri uri = Uri.parse("https://abr.se/happyeno/?get=happyeno_svar_put&svar_id=3");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);

        }
        else if (arg0.getId()==R.id.imageButton4){
            ((TextView) findViewById(R.id.textView6)).setText("Pressed: " + ++howManyClicks4);
            Uri uri = Uri.parse("https://abr.se/happyeno/?get=happyeno_svar_put&svar_id=4");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
              startActivity(intent);

        }

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

Ответы [ 3 ]

1 голос
/ 09 апреля 2019

если вы позвоните по URL через намерение, откроется браузер (имеется в виду новая вкладка), вместо этого вы можете использовать веб-представление для загрузки URL-адреса внутри приложения

в формате XML:

    <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/webview"
     android:layout_width="fill_parent"
      android:layout_height="fill_parent"
     />

в Активности:

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

        String url = "http://www.google.com";
        browser .setWebViewClient(new MyBrowser());
        browser .getSettings().setLoadsImagesAutomatically(true);
        browser .getSettings().setJavaScriptEnabled(true);
        browser .setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        browser .loadUrl(url);

 private class MyBrowser extends WebViewClient {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
     view.loadUrl(url);
     return true;
  }
 }
0 голосов
/ 09 апреля 2019

Если вы не хотите открывать URI во внешнем браузере, вы должны использовать WebView

Вы можете добавить WebView к вашему макету

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</WebView>

И затем в вашемактивность:

private WebViewClient webViewClient = new WebViewClient() {
    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        Toast.makeText(view.getContext(), error.getDescription(), Toast.LENGTH_SHORT).show();
    }
};

Найдите свой WebView по идентификатору и установите адрес для открытия

webView.setWebViewClient(webViewClient);
webView.loadUrl(yourUrl);
0 голосов
/ 09 апреля 2019
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

это начинает новую деятельность. Если вы не хотите начинать новое действие, но хотите, чтобы URL отображался в текущем действии, вам нужно добавить веб-просмотр в макете для текущего действия и открыть URL-адрес в веб-просмотре вместо вызова startActivity.

...