Java Android Read SMS mit Timer versagtAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Java Android Read SMS mit Timer versagt

Post by Anonymous »

Ich habe diesen Code, der gut ausgeführt wurde. Ich verwende ContentProvider Abfrage zum Zugriff auf SMS -Nachrichten und zeige sie mit Cursor an. Wenn ich versuchte, Timertask zu verwenden, lief die App, aber erst nach einer Weile, ohne irgendetwas auszuführen. Readsms () mit Intervallen und fügen Sie die ListView weiter hinzu. (Vorerst keine Sorgen über Duplikate)
Beachten Sie, dass das Programm ohne Hinzufügen von Timertask oder Postdelay Methode hinzugefügt wird. Ich kann hier jedoch keine Intervallfunktion hinzufügen, um die eingehende SMS -Nachricht weiter zu lesen.
Was mache ich falsch und was sollte meine Syntax sein? Beofre, dass ich TaskTimer ausprobiert habe und das auch zur Laufzeit abgestürzt ist. < /p>

Code: Select all

package com.example.emptyviews;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Telephony;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.os.Handler;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private ArrayList smsList = new ArrayList();
private ListView listView;
private static final int READ_SMS_PERMISSION_CODE = 1;

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

listView = findViewById(R.id.listView);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, smsList);
listView.setAdapter(adapter);

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.READ_SMS}, READ_SMS_PERMISSION_CODE);
} else {
/*
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
readSms();
//adapter.notifyDataSetChanged();
}
};
timer.schedule(task, 10000, 5000);
*/
}

}

private void readSms() {
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(
Telephony.Sms.CONTENT_URI,
null,
null,
null,
null);

if (cursor != null && cursor.moveToFirst()) {
String address = cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.ADDRESS));
String body = cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.BODY));
smsList.add("Sender: " + address + "\nMessage: " + body);
}

if (cursor != null) {
cursor.close();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == READ_SMS_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
new android.os.Handler().postDelayed(new Runnable(){
@Override
public void run(){
readSms();
ArrayAdapter adapter = (ArrayAdapter) listView.getAdapter();
adapter.notifyDataSetChanged();
}
});
//readSms();
//ArrayAdapter adapter = (ArrayAdapter) listView.getAdapter();
//adapter.notifyDataSetChanged();
}
}
}

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post