Ich mache eine sehr einfache Android-App, aber wenn ich versuche, es mit einer Webseite zu verbinden, funktioniert es nicht. Ich habe bereits viele Tutorials im Internet ausprobiert und auch hier habe ich schon viele Themen gelesen, aber ohne Erfolg. So, jetzt werde ich Ihnen meinen Code erklären, in der Hoffnung, dass wir gemeinsam eine Lösung finden können. Danke für jetzt.Probleme mit Android und MySQL/PHP-Datenbankverbindung
Dies ist die wichtigste Java-Seite, wo ich die Verbindung auf der OnClick Methode machen:
package com.example.enchan.crazyup;
import android.database.Cursor;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Button;
import android.view.View;
import android.content.Intent;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import android.view.Menu;
import android.app.Activity;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FollowUsActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_follow_us);
findViewById(R.id.subscribe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
EditText email = (EditText) findViewById(R.id.email);
String pkg = getPackageName();
URL url_page = null;
try {
url_page = new URL("http://crazyup.altervista.org/select_email.php?email==" + email.getText().toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection client = (HttpURLConnection) url_page.openConnection();
} catch (IOException e) {
e.printStackTrace();
} Intent OpenNewEmailActivity = new Intent(FollowUsActivity.this, NewEmailActivity.class);
Intent intent = OpenNewEmailActivity.putExtra(pkg + "Test", email.getText().toString());
startActivity(OpenNewEmailActivity);
}
});
}
}
Und das ist die corrispondent .xml Hauptdatei:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/bg_follow_us"
tools:context="com.example.enchan.crazyup.FollowUsActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/subscribe"
android:src="@drawable/iscriviti"
android:layout_marginBottom="41dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:ems="10"
android:id="@+id/email"
android:layout_above="@+id/subscribe"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Indirizzo Email"
android:id="@+id/email_title"
android:layout_above="@+id/email"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Im Manifest gibt es diese Berechtigungen:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Die pHP-Seite ist dies (und es funktioniert, wenn ich es auf Browser zu öffnen):
<?php
mysql_connect("localhost","crazyup","");
mysql_select_db("my_crazyup");
$s_email = $_GET['email'];
$string = "INSERT INTO email (content) VALUES ('".$s_email."')";
$q = mysql_query($string);
if (!$q) {
die("Errore nella query: " . mysql_error());
}
/* $q = mysql_query("SELECT * FROM email WHERE email =".$s_email);
while($e = mysql_fetch_assoc($q))
$output[] = $e;
print(json_encode($output)); */
mysql_close();
?>
Ich habe gelesen, dass ein wahrscheinlich Problem die Android-Version (Eibisch oder Lollipop) sein könnte, aber ich habe beide versucht, und ich habe die gleiche Sache. In der Logcat gibt es keine Fehler, so kann ich nicht verstehen, warum die App nicht funktioniert.
Ich sehe aus Ihrem Java-Code, dass Sie das Client-Objekt nicht verwenden: ist da ein Grund? Geben Sie auch "nicht funktioniert" an: Blockiert es irgendwo? – ddb
Ich benutze das Client-Objekt nicht, weil andere Lösungen, die ich gefunden habe, nicht funktionieren. Wenn ich sage, dass die App nicht funktioniert, meine ich, dass nichts passiert. Es gibt keine Fehler, aber auch jede Reaktion. Wie kann ich meinen Code ändern, um zu versuchen, ihn zu bearbeiten? Vielen Dank. Ps. Entschuldigung für mein schlechtes Englisch, ich bin Italiener. –
ist NewEmailActivity eine Aktivität, die von Ihnen erstellt wurde? Ihr Ziel ist es, den Benutzer eine E-Mail senden, wenn er auf die Schaltfläche klicken? – ddb