web-dev-qa-db-fra.com

Comment ouvrir un site Web quand un bouton est cliqué dans une application Android?

Je conçois une application avec plusieurs boutons sur lesquels les utilisateurs peuvent cliquer. Une fois le bouton cliqué, l'utilisateur est dirigé vers le site Web approprié. Comment puis-je accomplir cela?

18
Andy

Si vous parlez d'une application RCP, vous avez besoin du widget SWT link.

Ici est l'extrait de gestionnaire d'événement de lien officiel.

Mettre à jour

Voici une application Android minimaliste pour se connecter au superutilisateur ou au stackoverflow avec 2 boutons.

package ap.Android;

import Android.app.Activity;
import Android.content.Intent;
import Android.net.Uri;
import Android.os.Bundle;
import Android.view.View;

public class LinkButtons extends Activity {

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

    public void goToSo (View view) {
        goToUrl ( "http://stackoverflow.com/");
    }

    public void goToSu (View view) {
        goToUrl ( "http://superuser.com/");
    }

    private void goToUrl (String url) {
        Uri uriUrl = Uri.parse(url);
        Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
        startActivity(launchBrowser);
    }

}

Et voici la mise en page.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="fill_parent">
    <TextView Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:text="@string/select" />
    <Button Android:layout_height="wrap_content" Android:clickable="true" Android:autoLink="web" Android:cursorVisible="true" Android:layout_width="match_parent" Android:id="@+id/button_so" Android:text="StackOverflow" Android:linksClickable="true" Android:onClick="goToSo"></Button>
    <Button Android:layout_height="wrap_content" Android:layout_width="match_parent" Android:text="SuperUser" Android:autoLink="web" Android:clickable="true" Android:id="@+id/button_su" Android:onClick="goToSu"></Button>
</LinearLayout>

Si le temps le permet, je vais ajouter les logos du site aux boutons pour le rendre un peu plus sexy ;-)

35
Alain Pannetier

Dans votre fichier Java, écrivez le code suivant ...

ImageView Button = (ImageView)findViewById(R.id.yourButtonsId);

Button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.addCategory(Intent.CATEGORY_BROWSABLE);
        intent.setData(Uri.parse("http://www.yourURL.com"));
        startActivity(intent);
    }
});
21
Saty

Voici une réponse réalisable.

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
  package="com.tutorial.todolist"
  Android:versionCode="1"
  Android:versionName="1.0">
  <uses-sdk Android:minSdkVersion="3"></uses-sdk>
  <application Android:icon="@drawable/icon" Android:label="@string/app_name">
    <activity Android:name=".todolist"
              Android:label="@string/app_name">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  </application>
</manifest>

todolist.Java

package com.tutorial.todolist;
import Android.app.Activity; 
import Android.content.Intent;
import Android.net.Uri;
import Android.os.Bundle; 
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;

public class todolist extends Activity {    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn = (Button) findViewById(R.id.btn_clickme);
        btn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent myWebLink = new Intent(Android.content.Intent.ACTION_VIEW);
                myWebLink.setData(Uri.parse("http://www.anddev.org"));
                    startActivity(myWebLink);
             }
        });
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:Android="schemas.Android.com/apk/res/Android"
  Android:orientation="vertical" 
  Android:layout_width="fill_parent" 
  Android:layout_height="fill_parent" > 

    <Button Android:id="@+id/btn_clickme" 
      Android:text="Click me..." 
      Android:layout_width="fill_parent" 
      Android:layout_height="wrap_content" /> 
</LinearLayout>
11
Andy

Importer import Android.net.Uri;

Intent openURL = new Intent(Android.content.Intent.ACTION_VIEW);
openURL.setData(Uri.parse("http://www.example.com"));
startActivity(openURL);

ou cela peut être fait en utilisant,

TextView textView = (TextView)findViewById(R.id.yourID);

textView.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.addCategory(Intent.CATEGORY_BROWSABLE);
        intent.setData(Uri.parse("http://www.typeyourURL.com"));
        startActivity(intent);
    } });
5
Sampad
ImageView Button = (ImageView)findViewById(R.id.button);

Button.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        Uri uri = Uri.parse("http://google.com/");

        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
});
4
Anil gangwar

Ajoutez ceci à l'écouteur de clic de votre bouton: 

  Intent intent = new Intent(Android.content.Intent.ACTION_VIEW);
    try {
        intent.setData(Uri.parse(url));
        startActivity(intent);
    } catch (ActivityNotFoundException exception) {
        Toast.makeText(getContext(), "Error text", Toast.LENGTH_SHORT).show();
    }

Si vous avez une URL de site Web sous forme de variable au lieu de chaîne codée en dur, n'oubliez pas de gérer une exception ActivityNotFoundException et d'afficher une erreur. Ou vous pouvez recevoir une URL invalide et l'application va simplement planter. (Passez une chaîne aléatoire au lieu de la variable url et voyez par vous-même)

2
Johnny Five

vous pouvez l'utiliser sur votre activité de clic de bouton

Intent webOpen = new Intent(Android.content.Intent.ACTION_VIEW);
            WebOpen.setData(Uri.parse("http://www.google.com"));
                startActivity(myWebLink);

et importer ceci sur votre code

import Android.net.Uri;
2
meisamphp

Vous pouvez envelopper les boutons dans des ancres qui sont renvoyées au site Web approprié.

<a href="http://www.stackoverflow.com">
  <input type="button" value="Button" />
</a>
<a href="http://www.stackoverflow.com">
  <input type="button" value="Button" />
</a>
<a href="http://www.stackoverflow.com">
  <input type="button" value="Button" />
</a>

Lorsque l'utilisateur clique sur le bouton (entrée), il est dirigé vers la destination spécifiée dans la propriété href de l'ancre.

Edit: Oups, je n'ai pas lu "Eclipse" dans le titre de la question. Mon erreur.

0
Jared
public class MainActivity extends Activity {

private WebView webView1;
Button google; 


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

    google = (Button) findViewById(R.id.google);
    google.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            webView1 = (WebView) findViewById(R.id.webView);
            webView1.getSettings().setJavaScriptEnabled(true);
            webView1.loadUrl("http://www.google.co.in/");

      }
});        
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}
0
Kartyk Sp