webentwicklung-frage-antwort-db.com.de

Wie kann eine Website geöffnet werden, wenn in der Android-Anwendung auf eine Schaltfläche geklickt wird?

Ich entwerfe eine App mit mehreren Schaltflächen, auf die Benutzer klicken können. Sobald Sie auf die Schaltfläche klicken, wird der Benutzer zur entsprechenden Website geleitet. Wie mache ich das?

18
Andy

Wenn Sie von einer RCP-App sprechen, benötigen Sie das SWT link-Widget.

Hier ist der offizielle Link-Event-Handler-Snippet.

Update

Hier ist die minimalistische Android-Anwendung, um mit 2 Tasten eine Verbindung zum Superuser oder Stackoverflow herzustellen.

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

}

Und hier ist das Layout.

<?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>

Wenn es die Zeit zulässt, füge ich den Schaltflächen die Site-Logos hinzu, um es etwas sexyer zu machen ;-)

35
Alain Pannetier

Schreiben Sie den folgenden Code in Ihre Java-Datei ...

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

Hier ist eine praktikable Antwort.

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

import Android.net.Uri; importieren

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

oder es kann mit getan werden,

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

Fügen Sie dies dem Klicklistener Ihrer Schaltfläche hinzu: 

  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();
    }

Wenn Sie eine Website-URL als Variable anstelle einer hartcodierten Zeichenfolge haben, vergessen Sie nicht, eine ActivityNotFoundException zu behandeln und einen Fehler anzuzeigen. Oder Sie erhalten eine ungültige URL und die App stürzt einfach ab. (Übergeben Sie eine zufällige Zeichenfolge anstelle der Variable url und sehen Sie selbst)

2
Johnny Five

sie können dies für Ihre Button-Klick-Aktivität verwenden

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

und importieren Sie dies in Ihren Code

import Android.net.Uri;
2
meisamphp

Sie können die Schaltflächen in Anker umschließen, die auf der entsprechenden Website angezeigt werden.

<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>

Wenn der Benutzer auf die Schaltfläche (Eingabe) klickt, wird er zu dem in der Eigenschaft href des Ankers angegebenen Ziel geleitet.

Edit: Hoppla, ich habe "Eclipse" im Fragetitel nicht gelesen. Mein Fehler.

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