Wie richte ich die Verschlüsselung und Entschlüsselung zwischen Android und der ASP.Net-Webanwendung ein?

Bei dieser Verschlüsselung verwenden wir einen geheimen Schlüssel zum Verschlüsseln der Zeichenfolge. Der verwendete Algorithmus ist AES mit CBC-Modus (Cipher Block Chaining).

Der C#-Code verwendet PKCS7-Padding, da PKCS5 dort nicht verfügbar ist. In Android verwendet es intern PKCS5-Padding, auch wenn wir PKCS7-Padding in der Verschlüsselungstransformation angeben. Wir spezifizieren also auch den PKCS5-Padding-Modus. Beim Testen liefern beide die gleichen korrekten Ergebnisse.

Bei diesem Verschlüsselungsverfahren wird ein einziger Schlüssel sowohl für den geheimen Schlüssel als auch für das Salz verwendet.

Bei der Verwendung unterschiedlicher Schlüssel für den geheimen Schlüssel und das Salt gab es einige Unterschiede zwischen den Base64-codierten Versionen des Salt (oder Initialisierungsvektors). Die Base64-codierten Versionen wurden von Android- und C#-Codes erstellt und unterschieden sich voneinander.

Um dies zu überwinden, haben wir einen einzigen Schlüssel verwendet, der sowohl als geheimer Schlüssel als auch als Salz dient.

Der Code für den Android-Teil lautet wie folgt:

public class EncryptionUtils { private final String characterEncoding = "UTF-8"; private final String cipherTransformation = "AES/CBC/PKCS5Padding"; private final String aesEncryptionAlgorithm = "AES"; public String encrypt (String plainText, String key) löst UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException aus { byte [] plainTextbytes = plainText.getBytes(characterEncoding); Byte [] keyBytes = getKeyBytes (Schlüssel); // Base64.encodeToString zurückgeben (encrypt (plainTextbytes, keyBytes, keyBytes), Base64.DEFAULT); return Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.NO_WRAP); } Public String decrypt (String verschlüsselter Text, Zeichenfolgenschlüssel) wirft KeyException, GeneralSecurityException, GeneralSecurityException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException, IOException { byte [] cipheredBytes = Base64.decode (encryptedText, Base64.DEFAULT); byte[] keyBytes = getKeyBytes(key); return new String (decrypt(cipheredBytes, keyBytes, keyBytes), characterEncoding); } public byte [] decrypt( byte[] cipherText, byte[] key, byte [] initialVector) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpecy = new SecretKeySpec(key, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init (Cipher.DECRYPT_MODE, secretKeySpecy, ivParameterSpec); cipherText = cipher.doFinal (chiffreText); ChiffreText zurückgeben; } public byte[] encrypt(byte[] plainText, byte[] key, byte [] initialVector) löst NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpec = new SecretKeySpec(key, aesEncryptionAlgorithm); IvParameterSpec ivParameterSpec = new IvParameterSpec(initialVector); cipher.init (Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); Klartext = cipher.doFinal (Klartext); Klartext zurückgeben; } privates Byte [] getKeyBytes (String-Schlüssel) wirft UnsupportedEncodingException {Byte [] keyBytes = neues Byte [16]; byte [] parameterKeyBytes = key.getBytes (characterEncoding); System .arraycopy (parameterKeyBytes, 0, keyBytes, 0, Math.min (parameterKeyBytes.length, keyBytes.length)); Schlüsselbytes zurückgeben; } } Empfohlene Lektüre: In JavaScript in die Zwischenablage kopieren

Der Code für den C#-Teil lautet wie folgt:

// Verschlüsselt Klartext mit AES 128-Bit-Schlüssel und einer Kettenblockchiffre und gibt eine base64-codierte Zeichenfolge zurück. public string Encrypt(String plainText, String key) { var plainBytes = Encoding.UTF8.GetBytes(plainText); return Convert.ToBase64String (Encrypt (plainBytes, GetRijndaelManaged (key))); } Öffentlicher String Decrypt (String Verschlüsselungstext, Zeichenfolgenschlüssel) { var Verschlüsselungsbytes = Convert.FromBase64String (Verschlüsselungstext); return Encoding.UTF8.GetString(Decrypt(encryptedBytes, GetRijndaelManaged(key))); } public byte[] Encrypt(byte[] plainBytes, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateEncryptor() .TransformFinalBlock(plainBytes, 0, plainBytes.Length); } Öffentliches Byte [] Entschlüsseln (Byte [] verschlüsselte Daten, RijndaelManaged rijndaelManaged) {Rückkehr rijndaelManaged.CreateDecryptor () .TransformFinalBlock (verschlüsseltDaten, 0, verschlüsselteDaten.Länge); } public RijndaelManaged GetRijndaelManaged(String secretKey) { var keyBytes = new byte[16]; var secretKeyBytes = Encoding.UTF8.GetBytes(secretKey); Array.Copy (secretKeyBytes, keyBytes, Math.Min (keyBytes.Length, secretKeyBytes.Length)); return new RijndaelManaged { Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7, KeySize = 128, BlockSize = 128, Key = keyBytes, IV = keyBytes }; }

Mit Hilfe des obigen Codes kann man eine Zeichenfolge auf einer Plattform verschlüsseln und dann auf der anderen Plattform entschlüsseln und umgekehrt.

Empfohlen zu lesen: ,warSo sehen Sie den Code der ‘.ctp’-Datei so bunt wie die ‘.php’-Datei in NetBeans

How to save data to Firebase in Android?

Lernziele:

Der Zweck dieses Blogs ist es, die Leser darüber zu informieren, wie sie Daten in der Firebase Realtime-Datenbank von Android speichern können. In diese Datenbank können sowohl einfache Datentypen wie Strings als auch kompliziertere Datentypen wie Java-Objekte geschrieben werden.

Voraussetzungen:

Um die Firebase Realtime Database in Android verwenden zu können, benötigen wir ein Android Studio-Projekt zum Erstellen der Android-App. Außerdem benötigen wir ein Firebase-Projekt, um die Firebase-Echtzeitdatenbank mit der Android-App zu verbinden.

Führen Sie die folgenden Schritte aus, um ein neues Firebase-Projekt zu erstellen:- �

1. Öffnen Sie die URL – https://console.firebase.google.com

2. Klicken Sie dann auf “Projekt hinzufügen“.

3.Geben Sie als Nächstes den Namen des Firebase-Projekts ein und akzeptieren Sie die Bedingungen. Fahren Sie danach fort, indem Sie auf “Fortfahren” Taste.

4.�Klicken Sie dann auf dem nächsten Begrüßungsbildschirm auf “Fügen Sie Firebase zu Ihrer Android-App hinzu“. Geben Sie auf die gleiche Weise den Paketnamen ein und klicken Sie auf Weiter.

5. Laden Sie jetzt die Datei google-services.json auf Ihr lokales System herunter. Kopieren Sie diese Datei dann wie angegeben an den Speicherort im Android Studio-Projekt.

6. Folgen Sie dem kleinen Prozess im nächsten Schritt, um dem Build 3 Codezeilen hinzuzufügen. Gradle-Dateien auf Projekt- und App-Ebene.

7.� Beenden Sie dann das Hinzufügen der Android-App zum Firebase-Projekt.

8. Öffnen Sie den Abschnitt Datenbank, indem Sie auf das Symbol “Datenbank” Option im linken Menü. Klicken Sie dann auf die “Datenbank erstellen” Verknüpfung.

9. Jetzt ist der Erstellungsprozess des Firebase-Projekts abgeschlossen.

Empfohlen zu lesen: ,warWie rufe ich Daten von Firebase in Android ab?

Fügen Sie die folgende Zeile im Build auf App-Ebene hinzu. gradle-Datei, um die Bibliothek hinzuzufügen und mit der Verwendung der Firebase-Echtzeitdatenbank zu beginnen.

Implementierung 'com.google.firebase:firebase-database:16.0.6'

Code-Implementierung

Bevor wir fortfahren, lassen Sie uns verstehen, was eine Firebase-Referenz ist. In der Firebase-Datenbank werden die Daten an einem Ort gespeichert. Daher wird der Zeiger auf diesen Speicherort als Firebase-Referenz bezeichnet. Mehrere Verweise verweisen auf denselben Ort, wenn sie mit demselben Pfad initiiert werden.

Erstellen Sie eine Instanz der Firebase-Datenbank, indem Sie die folgende Codezeile schreiben:

private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

Erstellen Sie nun Verweise auf die Pfade, in denen die Daten in der Echtzeitdatenbank gespeichert werden. Da die Daten im JSON-Format in der Firebase-Datenbank gespeichert werden, sind die in den Referenzen angegebenen Pfade die Schlüssel des JSON-Objekts.

Empfohlen zu lesen: ,warWie rufe ich Daten von Firebase in Swift Language (iOS) ab?

Die folgende Codezeile muss hinzugefügt werden, um eine Referenz auf den Wurzelknoten in der Datenbank zu erstellen:

private DatabaseReference mDatabaseReference = mDatabase.getReference();

Erstellen Sie als Nächstes ein untergeordnetes Element unter dem Stammknoten in der Datenbank und verwenden Sie diesen untergeordneten Schlüssel, um die entsprechenden Daten hinzuzufügen. Danach kann der Datenbank eine Zeichenfolge hinzugefügt werden, indem Sie den unten genannten Codezeilen folgen:

mDatabaseReference = mDatabase.getReference().child("name"); mDatabaseReference.setValue("Donald Duck");

Die obigen Codezeilen würden die Daten in die Datenbank einfügen. Die Datenbank im Firebase-Projekt sieht folgendermaßen aus:

Die Firebase Realtime-Datenbank unterstützt auch das Speichern komplexer Java-Objekte. Daher muss zunächst eine Modellklasse zum Speichern der Java-Objekte erstellt werden. Stellen Sie außerdem sicher, dass Sie einen leeren Konstruktor und die Getter jedes Attributs in der Klasse hinzufügen.

Es folgt der Code für eine Demomodellklasse:

Im Folgenden finden Sie den Code zum Speichern eines Objekts dieser Klasse in der Firebase-Datenbank:

Benutzer user = neuer Benutzer ("Mickey", 18); mDatabaseReference = mDatabase.getReference().child("user"); mDatabaseReference.setValue(Benutzer);

Der oben genannte Code würde die Objektdaten wie folgt in die� Firebase-Datenbank einfügen:

Empfohlen zu lesen: ,warWie speichere ich Daten in Firebase in Swift Language (iOS)?

Fazit:

Jetzt wissen Sie, wie Sie Daten in der Firebase Realtime Database speichern. Außerdem bietet Knowband ein eCommerce Mobile App Builder-Modul für Online-Shop-Besitzer an. So ist das Mobile App Maker-Plugin für Plattformen wie PrestaShop, OpenCart, WooCommerce und Magento 2 verfügbar. So können Sie mit nur wenigen Klicks und ohne Schwierigkeiten Ihre native, responsive App für Smartphones und Tablets erstellen.

Wie rufe ich Daten von Firebase in Android ab?

Ziele des Blogs

Nach dem Lesen dieses Blogs können wir Daten aus der Firebase Realtime Database abrufen. Diese Daten können einfache Datentypen wie Strings oder komplexe Datentypen wie Java-Objekte umfassen.

Die Anforderungen:

Wir müssen ein Android Studio-Projekt und ein Firebase-Projekt bereit haben, um die Firebase Realtime Database verwenden zu können. Erstellen Sie ein neues Android Studio-Projekt (oder verwenden Sie ein vorhandenes Projekt). Dieses Android Studio-Projekt wird für die Arbeit mit der Echtzeitdatenbank verwendet. Führen Sie die folgenden Schritte aus, um das Firebase-Projekt zu erstellen:

1. Gehe zu https://console.firebase.google.com

2. Klicken Sie auf “Projekt hinzufügen” Taste.

3. Geben Sie den Projektnamen ein und akzeptieren Sie die Bedingungen und klicken Sie auf “Fortfahren” Taste.

 

4. Fügen Sie dann Ihrem Projekt eine Android-App hinzu. Es erfordert die Eingabe des Paketnamens der App. Klicken Sie auf Weiter.

5. Laden Sie die Datei google-services.json herunter und verschieben Sie diese Datei an den auf dem Bildschirm angegebenen Speicherort im Android-Projekt in Android Studio.

6. Im nächsten Schritt gäbe es ein kleines Tutorial, um 3 Codezeilen in die build.gradle-Dateien auf Projektebene und App-Ebene einzufügen. Fügen Sie sie entsprechend hinzu.

7. Schließen Sie dann diesen Vorgang zum Hinzufügen der Android-App zum Projekt ab.

8. Klicken Sie dann im linken Menü auf die Option „Datenbank“ und dann auf die Schaltfläche „Datenbank erstellen“.

 

,war

9. Die Einrichtung von Firebase ist abgeschlossen. Fügen Sie nun die Firebase-Bibliothek zur Verwendung der Firebase Realtime Database in der Datei build.gradle auf App-Ebene hinzu. Dies kann durch Hinzufügen der folgenden Zeile erfolgen:

Implementierung 'com.google.firebase:firebase-database:16.0.6'

Code-Implementierung

Bevor Sie die Referenzen abrufen, müssen Sie verstehen, was eine Firebase-Referenz ist. Ein Firebase-Verweis verweist auf einen Speicherort in der Firebase-Datenbank, an dem Daten gespeichert werden. Auch wenn Sie mehrere Referenzen erstellen, nutzen sie alle dieselbe Verbindung, vorausgesetzt, Sie haben beim Erstellen der Referenz aus der Datenbankinstanz denselben Pfad verwendet. Zunächst benötigen wir eine Instanz der Firebase-Datenbank, um sie verwenden zu können. Die Instanz kann durch die folgende Codezeile erstellt werden.

 

private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

 

Jetzt müssen Verweise auf die Pfade erstellt werden, in denen die Daten in der Datenbank gespeichert sind. Da die Daten in der Firebase-Datenbank im JSON-Format gespeichert sind, sind die Schlüssel des JSON-Objekts die in den Referenzen angegebenen Pfade. Die Referenz auf den Wurzelknoten kann durch die folgende Codezeile erstellt werden:

 

private DatabaseReference mGetReference = mDatabase.getReference();

 

Nachdem Sie die Referenz der Datenbank erhalten haben, muss ein asynchroner Listener an die Datenbankreferenz angehängt werden, der aktiv auf jede Änderung in der Datenbank lauscht. Dieser Listener gibt beim ersten Anhängen zunächst einen Daten-Snapshot der Datenbank zurück. Dann wird der Daten-Snapshot zurückgegeben, wenn eine Änderung an dem Pfad vorgenommen wird, auf den die Datenbankreferenz zeigt. Normalerweise enthält die Datenbank denselben Datentyp, aber nehmen Sie an, dass die Datenbank einige Daten unterschiedlichen Typs enthält. Unten finden Sie den Screenshot der Datenbank mit einigen Dummy-Daten:

 

Um die Datenbank aus dieser Datenbank abzurufen, hängen Sie den ValueEventListener an die Datenbankreferenz an. Der Listener kann mit folgendem Code hinzugefügt werden:

 

mGetReference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if (dataSnapshot.exists()){ HashMap dataMap = (HashMap ) dataSnapshot.getValue(); for (String key: dataMap.keySet()) { Objektdaten = dataMap.get(key); versuchen Sie {HashMap userData = (HashMap ) Daten; User mUser = new User((String) userData.get("name"), (int) (long) userData.get("age")); addTextToView(mUser.getName() + " - " + Integer.toString(mUser.getAge())); }catch (ClassCastException cce){ // Wenn das Objekt nicht in HashMap umgewandelt werden kann, bedeutet dies, dass es vom Typ String ist. try{String mString = String.valueOf(dataMap.get(key)); addTextToView(mString); }catch (ClassCastException cce2){ } } } } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } });

Nach dem Anhängen des Listeners wird dieser zunächst ausgeführt und gibt zunächst alle Daten in der Datenbank zu diesem Zeitpunkt zurück. Dieser Listener wird später zu dem Zeitpunkt aufgerufen, zu dem irgendeine Änderung in der Datenbank an dem Pfad stattfindet, auf den die Referenz zeigt, an die der Listener angehängt ist.

Zusammenfassung

Nachdem Sie das obige Verfahren befolgt haben, können Sie Daten aus der Firebase Realtime-Datenbank in Android abrufen. Wenn Sie auf Probleme stoßen, können Sie uns gerne unter support@knowband.com erreichen. Werfen Sie einen Blick auf unsere beliebtesten Woocommerce No Code Mobile App-Builder:

 

Wie erfolgt die Sitzungsverwaltung in Android?

In Android erfolgt die Sitzungsverwaltung mithilfe einiger Datenspeichertechniken. Diese Daten können in einigen globalen Variablen, Datenbanken oder Anwendungseinstellungen gespeichert werden.

Aber es gibt ein Problem mit den globalen Variablen. Die globalen Variablen können die Daten nur behalten, bis die Anwendung geöffnet wird. Sobald die Anwendung geschlossen wird, werden die globalen Variablen zerstört und ihre Werte gehen verloren.

Die in den Datenbank- und Anwendungseinstellungen gespeicherten Daten gehen nicht verloren, wenn die Anwendung geschlossen wird.

Diese werden also für die Sitzungsverwaltung verwendet. Aber die Datenspeicherung und der Zugriff in der Datenbank ist im Vergleich zu den Einstellungen langsamer.

Aus diesem Grund werden die Einstellungen für die Sitzungsverwaltung verwendet.

Im Android-Kontext werden diese Einstellungen als SharedPreferences bezeichnet. Diese ermöglichen eine schnellere Datenspeicherung, Zugriff und Aktualisierung.

SharedPreferences werden normalerweise verwendet, um die Einstellungen der Anwendung zu speichern.

Finden Sie die folgenden Schritte, um die SharedPreferences in der App zu verwenden, um Daten für die Aufrechterhaltung der Sitzung zu speichern und darauf zuzugreifen.

1. Initialisieren Sie den SharedPreferences-Editor, um Daten in den SharedPreferences der Anwendung zu speichern.

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name", MODE_PRIVATE); SharedPreferences.Editor Editor = prefs.edit();

2. Geben Sie den Wert in das Editor-Objekt ein, um ihn in den SharedPreferences zu speichern. Diese Werte können vom Typ sein: String, Boolean, Int, Float usw. Führen Sie nach dem Hinzufügen der Werte die Methode commit() des Editors aus, um die Werte zu speichern.

editor.putString("Schlüssel-Benutzername", "John Doe"); editor.commit();

3. Um die Daten aus den SharedPreferences abzurufen, ist das Editor-Objekt nicht erforderlich. Holen Sie sich einfach den erforderlichen String oder einen beliebigen anderen Wert mit der entsprechenden Methode.

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name ", MODE_PRIVATE); String username = prefs.getString("key-username", "default-value");

Der zweite Parameter der Methode getString() ist der Standardwert, der zurückgegeben wird, falls kein Wert in den Einstellungen gespeichert ist, die diesem Schlüssel entsprechen.

4. Um einen bestimmten SharedPreference-Schlüssel zu löschen, verwenden Sie die Methode remove().

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name", MODE_PRIVATE); SharedPreferences.Editor Editor = prefs.edit(); editor.remove("Schlüssel-Benutzername"); editor.commit();

5. Um alle gespeicherten SharedPreferences zu löschen, verwenden Sie die Methode clear().

SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences-key-name", MODE_PRIVATE); SharedPreferences.Editor Editor = prefs.edit(); editor.clear(); editor.commit();

Nachfolgend finden Sie das Verwendungsbeispiel dieser SharedPreferences für die Sitzungsverwaltung:-

Wenn sich ein Benutzer bei der Anwendung anmeldet, speichern Sie den Benutzernamen oder einen anderen entsprechenden Wert des Benutzers in den SharedPreferences. Verwenden Sie diesen gespeicherten Wert, um den Benutzer erneut anzumelden, wenn die Anwendung erneut geöffnet wird, oder auf diesen Wert kann in jeder Aktivität in der gesamten Anwendung zugegriffen werden, um den Benutzernamen abzurufen. Wenn der Benutzer auf Abmelden klickt, löschen Sie die benutzerbezogenen Felder, um den Benutzer abzumelden.

Setzen Sie Elemente linear und am unteren Rand des Bildschirms in Android

Die beste Möglichkeit, Elemente in Android linear zu platzieren, ist die Verwendung von LinearLayout. Attribut angeben 'Orientierung'des LinearLayout zu'vertikal‘.

Nun sind beliebig viele Elemente in der linearen Anordnung vertikal angeordnet.

Um die Elemente am unteren Rand des Bildschirms auszurichten, verwenden Sie ConstraintLayout und fügen Sie dem LinearLayout Einschränkungen hinzu, um ihn am unteren Rand des Bildschirms anzuhängen.

Unten finden Sie den Beispielcode, in dem sich zwei TextView (s) befinden und der Container LinearLayout am unteren Rand des Bildschirms angebracht ist.

<? xml version = "1.0" coding = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns: android = "https://schemas.android.com/apk/res/android" xmlns: app = "https://schemas.android.com/apk/res-auto" xmlns: tools = "https://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent": context = ". MainActivity"> <LinearLayout android: layout_width = "match_parent" android: layout_height = "wrap_content" android: orientation = "vertical" app: layout_constraintBottomOf = "parent" app: layout_constraintEnd_toEndOf = "übergeordneter" appart_auf_inhalt " "> <TextView android: id =" @ + id / element1 "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: text =" Dies ist das Element 1 "/> <TextView android: id =" @ + id / element2 "android: layout_width =" match_parent "android: layout_height =" wrap_content "android: text =" Dies ist das Element 2 "/> </ LinearLayout> </android.support.constraintLayout>

Wie erstelle ich ein Benachrichtigungsdialogfeld in Android?

Über das Warnungsdialogfeld können Sie eine Nachricht in einem Popup-Dialogfeld oder ein Textfeld für Benutzereingaben anzeigen oder eine benutzerdefinierte Ansicht im Dialogfeld anzeigen.

Damit die Ansicht im Popup-Dialogfeld angezeigt wird, muss sie programmgesteuert oder über XML erstellt werden. Anschließend muss die Ansicht im Dialogfeld so eingestellt werden, dass diese Ansicht für den Benutzer im Dialogfeld sichtbar ist.

Gehen Sie folgendermaßen vor, um ein Dialogfeld zu erstellen, in dem ein Feld für Benutzereingaben angezeigt wird.

1. Erstellen Sie eine Ansicht, die im Dialogfeld angezeigt werden soll.

final EditText userInput = new EditText (this);

2. Erstellen und Anzeigen eines Dialogfelds.

new AlertDialog.Builder (this) .setTitle ("Titel des Dialogfelds steht hier") .setView (userInput) .setPositiveButton ("Submit", new DialogInterface.OnClickListener () {@Override public void onClick (DialogInterface dialog, int which ) {// Handle deine Aktion hier, wenn auf "Submit" geklickt wird}}) .setNegativeButton ("Cancel", new DialogInterface.OnClickListener () {@Override public void onClick (DialogInterface dialog, int which) {// Handle deine Aktion hier, wenn auf die Schaltfläche "Abbrechen" geklickt wird}}) .show ();