den neuen code wie auf der Seite http://developer.android.com/guide/to…ssion-sdk-23-element.html beschrieben dabei hab ich gleichzeitig
den alten code behalten. Ich bin mir nicht sicher ob das so elegant ist aber es geht.
Beiträge von querzu
-
-
erstmal vielen Dank jogimuc du hast mir sehr geholfen. Ich programmier erst seit wenigen Tagen mit Java speziell jetzt mit Android Studio, da wusste ich das mit der Permission nicht. zudem wird es in vielen Tutorials eben noch anders erklärt. Jetzt funktioniert es.
-
dieses mal stürtzte es nicht ab, das ist schon mal gut nur bekomme ich als result :
"Permission denied (missing INTERNET permission?)"
ich habe aber
<uses-permission android:name="android.permission.INTERNET" />und <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />schon im AndroidManifest reingeschrieben. Mit dem Emulierten Smartphone komme ich normalerweise ins Internet. -
okay ich hab an der Stelle das super(); eingefügt leider immer noch das selbe Problem. Vieleicht hilft das bei der Problemlösung ich hab den code wie unten auskommentiert, danach stürtze es nicht ab natürlich lief es auch nicht.
-
erstmal danke für die schnelle Antwort. Habs gerade getestet leider das selbe Problem.
Bei was ich mir auch noch nicht sicher bin ist der Aufruf der classe, vieleicht hab ich da einen Fehler Gemacht.Java: Aufruf in der MainActivityButton lesenBtn = (Button) findViewById(R.id.button2); lesenBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new ActivityDataSource(textView).execute("Entrys"); Log.d("String", "onClick: ");// nur zum prüfen der Button Funktion } });
-
die URL hab ich ab geändert https://thomassch91.000webhostapp.com/conny2.0.php
-
hallo an alle die dies lesen, ich bin gerade an einem Projekt um ein paar Daten in einer App graphisch und als Text darzustellen, nicht mehr und nicht weniger. Angefangen habe ich es erstmal mit einer Variable aus meiner Datenbank von dem Anbieter www.000webhost.comversucht. Aus Tutorials hab ich versucht mal zuerst eine PHP Datei zu schreiben( die ich unten nochmals einpflegen werde) die auf dem gleichen Server liegt. Das PHP Skript funktioniert soweit hab’s schon mal ohne App getestet. Die App ruft auf Button druck eine separate classe auf die die Informationen über die PHP Datei bekommt und in ein TextView ausgibt(sollte ich später noch ändern). Doch beim drücken des Button stürzt die App ab und ich hab leider keinen Schimmer wieso.
schonmal vielen Dank für eure hilfe.PHP: PHP Datei
Alles anzeigen<?php $reportingLevel = -1; //0 für alle PHP Fehler und Warungen ausblenden, -1 für alle anzeigen error_reporting($reportingLevel); //Sicherheitsabfrage ob der Authentifizierungscode mit übergeben wurde. //Wenn der Code nicht übergeben wurde wird die gesamte Prozedure abgebrochen. checkAuthCode(); //Datenbankverbindung aufbauen $connection = getDBConnection(); function getDBConnection(){ $db_name = "dbname"; $mysql_username = "dbusername"; $mysql_password = "Password"; $server_name = "localhost"; $fehler1 = "Fehler 1: Fehler beim aufbauen der Datenbankverbindung!"; $link = mysqli_connect($server_name, $mysql_username, $mysql_password, $db_name ); if($link) { //echo "connection success"; } else{ //echo "connection not succsess"; } if (!$link) { die('Verbindung schlug fehl: ' . mysqli_error()); } /* check connection */ if (mysqli_connect_errno()) { die($fehler1); } return $link; } //getAllEntrys($connection); $method = $_POST['method']; echo $method; if ($method == 'allEntrys'){ getAllEntrys($connection); } //Lesen der Daten aus der MySQL Datenbank mit PHP function getAllEntrys($connection){ $sqlStmt = "SELECT * FROM teat1;"; $result = mysqli_query($connection,$sqlStmt); $data = array(); if ($result = $connection->query($sqlStmt)) { while ($row = $result->fetch_assoc()) { $testwert = $row["testwert"]; array_push($data,array("testwert"=> $testwert)); } $result->free(); } closeConnection($connection); foreach ($data as $d){ echo $d["testwert"]; echo "|"; } } function checkAuthCode(){ $fehler0 = "Fehler 0: Keine erfolgreiche Authentifizierung!"; if (isset($_POST['authkey']) AND isset($_POST['method'])){ $authkey = $_POST['authkey']; if ($authkey != 'key'){ die($authkey); } } else { die(var_dump($_POST)); } } function closeConnection($connection){ mysqli_close($connection); } ?>
Java: Classe zum lesen der Daten aus mySQL
Alles anzeigenpackage ActivityDataSource_Pack; import android.os.AsyncTask; import android.util.Log; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; /** * Created by Agando on 21.12.2017. */ public class ActivityDataSource extends AsyncTask<String, Void, String> { public static final String AUTHKEY = "key"; public static final String POST_PARAM_KEYVALUE_SEPARATOR = "="; public static final String POST_PARAM_SEPARATOR = "&"; private static final String DESTINATION_METHOD = "allEntrys"; private TextView textView; private URLConnection conn; public ActivityDataSource(TextView textView) { this.textView = textView; } @Override protected String doInBackground(String... params) { try { openConnection(); return readResult(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * Öffnet eine Verbindung {@link URLConnection}. * @throws IOException */ private void openConnection() throws IOException{ //StringBuffer für das zusammensetzen der URL StringBuilder dataBuffer = new StringBuilder(); dataBuffer.append(URLEncoder.encode("authkey", "UTF-8")); dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR); dataBuffer.append(URLEncoder.encode(AUTHKEY, "UTF-8")); dataBuffer.append(POST_PARAM_SEPARATOR); dataBuffer.append(URLEncoder.encode("method", "UTF-8")); dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR); dataBuffer.append(URLEncoder.encode(DESTINATION_METHOD, "UTF-8")); //Adresse der PHP Schnittstelle für die Verbindung zur MySQL Datenbank URL url = new URL("https://Name.000webhostapp.com/conny2.0.php"); conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(dataBuffer.toString()); wr.flush(); } /** * Ließt das Ergebnis aus der geöffneten Verbindung. * @return liefert ein String mit dem gelesenen Werten. * @throws IOException */ private String readResult()throws IOException{ String result = null; //Lesen der Rückgabewerte vom Server BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder sb = new StringBuilder(); String line = null; //Solange Daten bereitstehen werden diese gelesen. while ((line = reader.readLine()) != null) { sb.append(line); } return sb.toString(); } @Override protected void onPostExecute(String result) { if(!isBlank(result)) { this.textView.setText(result); } } private boolean isBlank(String value){ return value == null || value.trim().isEmpty(); } }