Frage von Tomixd3, 79

Wie kann man dass machen, dass eine app (mit android studio erstellt) beim zweiten start eine andere activity ausführt(Passwort merken Funktion)?

Ich habe in android studio eine app geschrieben, die eine Website anzeigt, bei der man sich vorher anmelden muss(wird von der Website verlangt). Der Code sieht folgendermaßen aus:

 public void authenticateLogin(View view) {
    if (username.getText().toString().equals("schule") &&
            password.getText().toString().equals("schule")) {
        username.setVisibility(View.INVISIBLE);
        password.setVisibility(View.INVISIBLE);
        login.setVisibility(View.INVISIBLE);
        loginLockedTV.setVisibility(View.INVISIBLE);
        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.loadUrl("<a href="http://schule:schule@www........de">http://schule:schule@www........de</a>");
        webView.setVisibility(visibility);
        WebSettings settings = webView.getSettings();
        settings.setBuiltInZoomControls(true);
        settings.setSupportZoom(true);
        settings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
        webView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
                viewx.loadUrl(urlx);
                return false;
            }
        });

    } else {
        Toast.makeText(getApplicationContext(), "Falsches Passwort!",
                Toast.LENGTH_SHORT).show();
        numberOfRemainingLoginAttempts--;
        numberOfRemainingLoginAttemptsTV.setText(Integer.toString(numberOfRemainingLoginAttempts));

Damit melde ich mich ja an der Website an. Aber wie kann man dass machen, dass wenn ich die app ein zweites mal öffne, Benutzername und Passwort schon dastehen? bzw. man gar nicht mehr nach Benutzernamen und Passwort gefragt wird und sich die Website automatisch öffnet? Also wie eine Passwort merken Funktion.

Antwort
von heilwigkenner, 51

Mal davon abgesehen, dass ein Browser wie Chrome wahrscheinlich die bessere Performance als eine WebView bietet, kannst du das mit SharedPreferences machen.

http://stackoverflow.com/questions/23024831/android-shared-preferences-example

Kommentar von Tomixd3 ,

könntest du mir dass vielleicht auch an meinem Code zeigen? Da ich es nicht so richtig hin bekomme.

Kommentar von heilwigkenner ,

Was ist denn der Fehler?

Statt den Text aus den TextViews zu holen, lädst du halt den aus den SharedPreferences.

Kommentar von Tomixd3 ,

1. Er erkennt editor nicht und 2. verstehe ich nicht, wie ich dass mit username und Password machen soll

Kommentar von heilwigkenner ,

Poste mal deinen Code.

Kommentar von Tomixd3 ,

Habe ich

Kommentar von heilwigkenner ,

Ok, aber wo funktioniert das nicht? Du lädst die SharedPreferences ja gar nicht.

Kommentar von Tomixd3 ,

Also ich schick gleich nochmal den code, aber das problem ist, dass ich nicht weiß wie ich dass machen muss, dass es sich mit dem
(durch sharedpreferences) gespeicherten username und password einloggt statt mit dem was ich in der url angegeben habe.

Code:

package de.schule.plan;

import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

private EditText username;
private EditText password;
private Button login;
private TextView loginLockedTV;
private TextView attemptsLeftTV;
private TextView numberOfRemainingLoginAttemptsTV;
private TextView textView1;
private TextView textView2;
private TextView textView3;
private WebView webView;
int numberOfRemainingLoginAttempts = 10000000;
int visibility;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupVariables();
}
private void setupVariables() {
username = (EditText) findViewById(R.id.usernameET);
password = (EditText) findViewById(R.id.passwordET);
login = (Button) findViewById(R.id.loginBtn);
loginLockedTV = (TextView) findViewById(R.id.loginLockedTV);
attemptsLeftTV = (TextView) findViewById(R.id.attemptsLeftTV);
numberOfRemainingLoginAttemptsTV = (TextView) findViewById(R.id.numberOfRemainingLoginAttemptsTV);
numberOfRemainingLoginAttemptsTV.setText(Integer.toString(numberOfRemainingLoginAttempts));

}

public static final String MY_PREFS_NAME = "MyPrefsFile";

public void authenticateLogin(View view) {
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

if (username.getText().toString().equals("schule") &&
password.getText().toString().equals("schule")) {
editor.putString("username", "schule");
editor.putString("password", "schule");
editor.commit();
username.setVisibility(View.INVISIBLE);
password.setVisibility(View.INVISIBLE);
login.setVisibility(View.INVISIBLE);
loginLockedTV.setVisibility(View.INVISIBLE);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl("http://osp:schule@www....de");
webView.setVisibility(visibility);
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
viewx.loadUrl(urlx);
return false;
}
});

} else {
Toast.makeText(getApplicationContext(), "Falsches Passwort!",
Toast.LENGTH_SHORT).show();
numberOfRemainingLoginAttempts--;
numberOfRemainingLoginAttemptsTV.setText(Integer.toString(numberOfRemainingLoginAttempts));

if (numberOfRemainingLoginAttempts == 0) {
login.setEnabled(false);
loginLockedTV.setVisibility(View.VISIBLE);
loginLockedTV.setBackgroundColor(Color.RED);
loginLockedTV.setText("LOGIN LOCKED!!!");
}
}

} else {
username.setVisibility(View.INVISIBLE);
password.setVisibility(View.INVISIBLE);
login.setVisibility(View.INVISIBLE);
loginLockedTV.setVisibility(View.INVISIBLE);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl("http://username:password@www....de");
webView.setVisibility(visibility);
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
viewx.loadUrl(urlx);
return false;
}
});
}
}
}
Antwort
von Tomixd3, 38
package de.schule.plan;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

private EditText username;
private EditText password;
private Button login;
private TextView loginLockedTV;
private TextView attemptsLeftTV;
private TextView numberOfRemainingLoginAttemptsTV;
private TextView textView1;
private TextView textView2;
private TextView textView3;
private WebView webView;
int numberOfRemainingLoginAttempts = 10000000;
int visibility;

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

public void authenticateLogin(View view) {
if (username.getText().toString().equals("schule") &&
password.getText().toString().equals("schule")) {

username.setVisibility(View.INVISIBLE);
password.setVisibility(View.INVISIBLE);
login.setVisibility(View.INVISIBLE);
loginLockedTV.setVisibility(View.INVISIBLE);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl("http://schule:schule@www.......de");
webView.setVisibility(visibility);
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
viewx.loadUrl(urlx);
return false;
}
});

} else {
Toast.makeText(getApplicationContext(), "Falsches Passwort!",
Toast.LENGTH_SHORT).show();
numberOfRemainingLoginAttempts--;
numberOfRemainingLoginAttemptsTV.setText(Integer.toString(numberOfRemainingLoginAttempts));

if (numberOfRemainingLoginAttempts == 0) {
login.setEnabled(false);
loginLockedTV.setVisibility(View.VISIBLE);
loginLockedTV.setBackgroundColor(Color.RED);
loginLockedTV.setText("LOGIN LOCKED!!!");
}
}
}

private void setupVariables() {
username = (EditText) findViewById(R.id.usernameET);
password = (EditText) findViewById(R.id.passwordET);
login = (Button) findViewById(R.id.loginBtn);
loginLockedTV = (TextView) findViewById(R.id.loginLockedTV);
attemptsLeftTV = (TextView) findViewById(R.id.attemptsLeftTV);
numberOfRemainingLoginAttemptsTV = (TextView) findViewById(R.id.numberOfRemainingLoginAttemptsTV);
numberOfRemainingLoginAttemptsTV.setText(Integer.toString(numberOfRemainingLoginAttempts));

}

}

Keine passende Antwort gefunden?

Fragen Sie die Community