2016-06-30 8 views
-2

Ich möchte, dass meine App den Text auf dieser Webseite überprüft: http://advancedmaths.cba.pl/v.txt und wenn die erkannte Ganzzahl größer ist als z. 20160625, dann sollte die App eine andere Aktivität öffnen. Und hier ist das Problem, weil die Aktivität nicht startet. Der Code:Wie öffne ich eine Aktivität, wenn ein bestimmter Text auf einer Webseite gefunden wurde?

package com.example.lenovo.advancedmathspl; 

import android.content.Context; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 

public class MainActivity extends AppCompatActivity { 

    Button b, b2, b3, b4, b5, b6, b7, bw; 
    int a; 

    public class Aktualizacja extends AsyncTask <Void, Void, Void>{ 

     @Override 
     protected Void doInBackground (Void... params){ 
      try { 
       URL url = new URL("http", "advancedmaths.cba.pl", 80, "/v.txt"); 
       URLConnection conn = url.openConnection(); 
       conn.setDoInput(true); 
       conn.connect(); 
       StringBuilder sb = new StringBuilder(); 
       InputStreamReader isr = new InputStreamReader(conn.getInputStream()); 
       BufferedReader in = new BufferedReader(isr); 
       String line; 

       line = in.readLine(); 

       a = Integer.parseInt(line); 
       final Context context = getApplicationContext(); 

       if (a > 20160625){ 
        Intent i = new Intent(context, Aktualizacja.class); 
        startActivity(i); 
       } else { 
        Toast.makeText(getApplicationContext(), "No updates available.", Toast.LENGTH_LONG).show(); 
       } 
      } catch (Exception e){ 
       e.printStackTrace(); 
      } 
      return null; 
     } 
    } 

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

     final Context context = getApplicationContext(); 

     b = (Button) findViewById(R.id.button); 
     b2 = (Button) findViewById(R.id.button2); 
     b3 = (Button) findViewById(R.id.button3); 
     b4 = (Button) findViewById(R.id.button4); 
     b5 = (Button) findViewById(R.id.button5); 
     b6 = (Button) findViewById(R.id.button6); 
     b7 = (Button) findViewById(R.id.button7); 
     bw = (Button) findViewById(R.id.buttonw); 

     ... <-- here is the rest of my app, but it doesn't matter 

     View.OnClickListener l7 = new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Aktualizacja aktualizacja = new Aktualizacja(); 
       aktualizacja.execute(null, null, null); 
      } 
     }; 

     b7.setOnClickListener(l7); 
    } 
} 

Zu diesem Moment final Context context = getApplicationContext(); alles richtig geht, habe ich einen Haltepunkt auf dieser Linie und a = 20.160.626 wie erwartet, aber wenn ich die app laufen, erhalte ich dieses Protokoll:

06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.lenovo.advancedmathspl/com.example.lenovo.advancedmathspl.MainActivity$Aktualizacja}; have you declared this activity in your AndroidManifest.xml? 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1900) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1624) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.app.Activity.startActivityForResult(Activity.java:3761) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.app.Activity.startActivityForResult(Activity.java:3722) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:842) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.app.Activity.startActivity(Activity.java:4032) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.app.Activity.startActivity(Activity.java:4000) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at com.example.lenovo.advancedmathspl.MainActivity$Aktualizacja.doInBackground(MainActivity.java:45) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at com.example.lenovo.advancedmathspl.MainActivity$Aktualizacja.doInBackground(MainActivity.java:24) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
06-30 09:16:44.014 30525-30607/com.example.lenovo.advancedmathspl W/System.err:  at java.lang.Thread.run(Thread.java:818) 

Haben Sie eine Idee, wie Sie eine Aktivität starten oder nicht, abhängig von dem auf der Webseite gefundenen Text? Es funktioniert möglicherweise auch wie die Klasse Aktualizacja sendet Informationen zum Starten der Aktivität an die MainActivity-Klasse, aber ich habe auch versucht, es zu tun und hat nicht so gut funktioniert.

UPDATE: Die Aktivität startet, wenn gezwungen wird, in onCreate void zu starten, aber es ist nicht das, was ich will.

UPDATE 2: hier ist mein AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.lenovo.advancedmathspl"> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".LiczbyPierwsze" /> 
     <activity android:name=".LiczbyPierwszeJava" /> 
     <activity android:name=".LiczbyPiramidalne" /> 
     <activity android:name=".Trojkat" /> 
     <activity android:name=".TrojkatJava" /> 
     <activity android:name=".Kwadrat" /> 
     <activity android:name=".KwadratJava" /> 
     <activity android:name=".pieciokat" /> 
     <activity android:name=".pieciokatJava" /> 
     <activity android:name=".szesciokat" /> 
     <activity android:name=".szesciokatJava" /> 
     <activity android:name=".siedmiokat" /> 
     <activity android:name=".siedmiokatJava" /> 
     <activity android:name=".nkat" /> 
     <activity android:name=".nkatJava" /> 
     <activity android:name=".LiczbyRuthaAarona" /> 
     <activity android:name=".LiczbyRuthaAaronaJava" /> 
     <activity android:name=".LiczbySmitha" /> 
     <activity android:name=".LiczbySmithaJava" /> 
     <activity android:name=".LiczbyFigurowe" /> 
     <activity android:name=".LiczbyTrojkatne" /> 
     <activity android:name=".LiczbyTrojkatneJava" /> 
     <activity android:name=".LiczbyKwadratowe" /> 
     <activity android:name=".LiczbyKwadratoweJava" /> 
     <activity android:name=".LiczbyPieciokatne" /> 
     <activity android:name=".LiczbyPieciokatneJava" /> 
     <activity android:name=".LiczbySzesciokatne" /> 
     <activity android:name=".LiczbySzesciokatneJava" /> 
     <activity android:name=".LiczbyNkatne" /> 
     <activity android:name=".LiczbyNkatneJava" /> 
     <activity android:name=".SitoEratostenesa" /> 
     <activity android:name=".SitoEratostenesaJava" /> 
     <activity android:name=".LiczbyGeoWielowymiarowe" /> 
     <activity android:name=".LiczbyGeoWielowymiaroweWyswietl" /> 
     <activity android:name=".LiczbyGeoWielowymiaroweJava" /> 
     <activity android:name=".Aktualizacja"></activity> 
    </application> 

    <uses-permission android:name="android.permission.INTERNET" /> 

</manifest> 
+0

haben Sie Ihre 'Aktualizacja.class' Datei in Ihrem Manifest hinzufügen? –

+0

Versuchen Sie, die Fehlermeldung zu lesen. –

Antwort

0

Sie benötigen, um Ihre Aktivität in AndroidManifest.xml Datei zu registrieren.

<activity 
     android:name=".Aktualizacja" 
     android:screenOrientation="portrait" 
     android:windowSoftInputMode="stateHidden|adjustPan" /> 
+0

'' Ich hatte dies, geändert, aber immer noch den gleichen Fehler. – Leftismer

+0

Sie müssen Button deklarieren und dann button.setOnclickListner –

+0

Der Button wird deklariert. – Leftismer

0

Erklären Sie Ihre Tätigkeit in AndroidManifest.xml nach <application>

So:

<activity android:name=".MainActivity$Aktualizacja" 
     android:theme="@style/Theme.AppCompat.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.Default" /> 
     </intent-filter> 
    </activity> 
+0

Funktioniert überhaupt nicht, unterstreicht diesen Teil: '.MainActivity $ Aktualizacja'. – Leftismer

+0

Stellen Sie sicher, dass der Teil nach dem Punkt genau mit dem Namen Ihrer Aktivität übereinstimmt. Bitte aktualisieren Sie Ihren Code und fügen Sie Ihre aktuelle manifest.xml hinzu – VikingPingvin

+0

Alles sollte gleich nach der Änderung in '.Aktualizacja' sein, funktioniert aber nicht. – Leftismer

Verwandte Themen