Descargar un sitio web a una cadena
Después de hacer algunos tutoriales básicos, comencé a hacer mi primera aplicación real de Android en eclipse. Quiero que esta aplicación compruebe si el texto de un EditText coincide con el texto de un sitio web (éste: http://www.augustinianum.eu/roosterwijzigingen/14062012.pdf (contiene los cambios de horario de mi escuela)). He averiguado cómo hacer que la aplicación compruebe si el texto en el EditText coincide con una cadena (con el método contains ()), así que ahora lo único que tengo que hacer es descargar todo el texto de ese sitio web a un cuerda. Pero no tengo ni idea de cómo hacerlo. O hay quizá un método que puedo comprobar con si un Web site contiene una cierta palabra sin descargar el texto del Web site a una cadena.
¡Gracias!
- Cómo cambiar la fuente de la consola de Android en Eclipse?
- ¿Dónde están almacenados los dibujos o clipart de android.R.drawable?
- Animación flotante suave con traducción en XML
- Phonegap-Stopped 33 cuadros! La aplicación puede estar haciendo demasiado trabajo en su hilo principal
- Este SDK de Android requiere Android Developer Toolkit versión 23.0.0 o superior
(BTW no soy inglés así que plz me perdona si he hecho algunos errores relacionados con el lenguaje.)
@androider No puedo publicar mi código en el cuadro de comentarios, así que aquí está:
package me.moop.mytwitter; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.app.Activity; import android.app.ProgressDialog; public class MainActivity extends Activity { Button mBtnCheck; EditText mEtxtGroup; ProgressDialog mProgressDialog; TwitterUser mTwitterUser; TextView mTxtv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.nicelayout3); mBtnCheck = (Button) findViewById(R.id.btnCheck); mEtxtGroup = (EditText) findViewById(R.id.etxtGroup); mTxtv1 = (TextView) findViewById(R.id.textView1); } public void checkScheduleChange(View view){ if (view == mBtnCheck){ String group; group = mEtxtGroup.getText().toString(); if (group.length() > 0){ mProgressDialog = new ProgressDialog(this); mProgressDialog.setMessage("Bezig met checken voor roosterwijzigingen..."); mProgressDialog.show(); try { URL url = new URL("http://www.augustinianum.eu/roosterwijzigingen/14062012.pdf"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str; while ((str = in.readLine()) != null){ mProgressDialog.dismiss(); if(str.contains(mEtxtGroup.getText().toString())){ Toast.makeText(this, "U hebt een roosterwijziging.", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(this, "U hebt geen roosterwijzigingen", Toast.LENGTH_LONG).show(); } } in.close(); } catch (MalformedURLException e) { Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show(); } catch (IOException e) { Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show(); } } else{ Toast.makeText(this, "Voer een klas in", Toast.LENGTH_LONG).show(); } } } }
Estas son las propiedades del botón:
<Button android:id="@+id/btnCheck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:clickable="true" android:onClick="checkScheduleChange" android:text="Check" >
- Plugin de Eclipse y modificación de ADT para Integración de API en el menú Crear proyecto
- Cómo organizar Eclipse - Workspace VS Lenguajes de programación
- Android: no se puede importar BaseGameUtils con éxito en Eclipse
- ¿Dónde colocar el archivo google-services.json en el proyecto eclipse?
- Actualizar Robolectric 2.4: Obtener error de etiqueta de aplicación para proyectos de biblioteca en eclipse
- Eclipse / Android: "Errores ejecutando compilador 'Android Pre Compiler' en proyecto ..."
- Archivo de la biblioteca requerida no se puede leer o no es un archivo ZIP válido
- La hormiga más reciente en Fedora 14 es 1,7, pero necesito 1,8 hormigas
Usted puede conseguir el texto usando InputStream Reader como esto.
try { URL url = new URL("http://yourwebpage.com"); // Read all the text returned by the server BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str; while ((str = in.readLine()) != null) { // str is one line of text; readLine() strips the newline character(s) // You can use the contain method here. if(str.contains(editText.getText().toString)) { You can perform your logic here!!!!! } } in.close(); } catch (MalformedURLException e) { } catch (IOException e) { }
También agrega un permiso adicional en tus aplicaciones. Archivo de manifiesto:
<uses-permission android:name="android.permission.INTERNET/>
// ============================ EDIT =================== ============= //
if (group.length() > 0) { mProgressDialog = new ProgressDialog(this); mProgressDialog.setMessage("Bezig met checken voor roosterwijzigingen..."); mProgressDialog.show(); try { URL url = new URL("http://www.augustinianum.eu/roosterwijzigingen/14062012.pdf"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str; while ((str = in.readLine()) != null){ if(str.contains(mEtxtGroup.getText().toString())){ if(mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } Toast.makeText(this, "U hebt een roosterwijziging.", Toast.LENGTH_LONG).show(); break; } } in.close(); } catch (MalformedURLException e) { Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show(); } catch (IOException e) { Toast.makeText(this, "Er is een fout opgetreden, probeer opniew.", Toast.LENGTH_LONG).show(); } if(mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } } else{ Toast.makeText(this, "Voer een klas in", Toast.LENGTH_LONG).show(); }
Esta es una buena pregunta relacionada con Java: ¿Cómo se descarga mediante programación una página Web en Java
A continuación, puede implementar cualquier método que elija en su aplicación. Una cosa a tener en cuenta es que debe habilitar el permiso de INTERNET
en su aplicación para poder acceder a Internet.