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>
haben Sie Ihre 'Aktualizacja.class' Datei in Ihrem Manifest hinzufügen? –
Versuchen Sie, die Fehlermeldung zu lesen. –