Добрый день, подскажите пожалуйста, у меня есть база в которую в фоновом режиме записываются входящие сообщения, из этой базы берутся данные и добавляются в listView. Вопрос заключается в следующем как можно реализовать обновление Activity при поступление нового сообщения, если пользователь находится в этой Activity?
public class acran1 extends AppCompatActivity {
final static Logger log =Logger.getLogger(acran2.class.getName());
private static final String TAG="myLogs";
DBHelper dbHelper;
ListView listView;
public static HashMap<String, String> spisokKontaktov;
public static HashMap<String, String> nameNomer;
public String massivArray [][];
public int count;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acran1);
dbHelper = new DBHelper(this);
getContacts();
listView=(ListView)findViewById(R.id.listView);
List<String> items=initData();
ArrayAdapter<String> adapter=new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
count=count-1;
String selectedItem = massivArray[count-position][1];
Intent intent1=new Intent(getApplicationContext(), acran2_2.class);
intent1.putExtra("name", massivArray[count-position][1]);
intent1.putExtra("nomer", massivArray[count-position][0]);
startActivity(intent1);
// установка текста элемента TextView
// selection.setText(selectedItem);
}
});
//
}
private List<String> initData() {
List<String> list=new ArrayList<String>();
// извлекаем данные с таблицы по абонентам смс
SQLiteDatabase database = dbHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
count=0;
Cursor cursor = database.query(DBHelper.TABLE_NUMBER, new String[] {}, null, new String[] {}, null, null, null, null);
if (cursor.moveToFirst()) {
Log.i(TAG, "acran1 извлечение из базы списка");
int idIndex = cursor.getColumnIndex(DBHelper.NUM_ID);
int phoneIndex = cursor.getColumnIndex(DBHelper.NUM_PHONE);
int keyIndex = cursor.getColumnIndex(DBHelper.NUM_NAME);
do {
Log.i(TAG, "ID = " + cursor.getInt(idIndex) +
", phone = " + cursor.getString(phoneIndex) +
", name = " + cursor.getString(keyIndex));
count++;
} while (cursor.moveToNext());
} else
Log.i(TAG,"0 rows");
cursor.close();
Log.i(TAG, "acran1 размер базы "+ count);
this.massivArray=new String [count][2];
int shit=0;
Cursor qwerty = database.query(DBHelper.TABLE_NUMBER, new String[] {}, null, new String[] {}, null, null, null, null);
if (qwerty.moveToFirst()) {
int idIndex = qwerty.getColumnIndex(DBHelper.NUM_ID);
int phoneIndex = qwerty.getColumnIndex(DBHelper.NUM_PHONE);
int keyIndex = qwerty.getColumnIndex(DBHelper.NUM_NAME);
do {
Log.i(TAG, "ID = " + qwerty.getInt(idIndex) +
", phone = " + qwerty.getString(phoneIndex) +
", name = " + qwerty.getString(keyIndex));
massivArray[shit][0]=qwerty.getString(phoneIndex);
massivArray[shit][1]=qwerty.getString(keyIndex);
shit++;
} while (qwerty.moveToNext());
} else
Log.i(TAG,"0 rows");
qwerty.close();
for (int i=count; i>0; i--){
list.add(massivArray[i-1][1]);
}
return list;
}
// вытаскиваем список всех контактов из телефона парой номер-имя
public void getContacts() {
this.spisokKontaktov=new HashMap<String,String>();
this.nameNomer=new HashMap<String,String>();
String phoneNumber = null;
String nameKontakt="";
String numberKontakt="";
//Связываемся с контактными данными и берем с них значения id контакта, имени контакта и его номера:
Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
String _ID = ContactsContract.Contacts._ID;
String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;
Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);
//Запускаем цикл обработчик для каждого контакта:
try {
if (cursor.getCount() > 0) {
//Если значение имени и номера контакта больше 0 (то есть они существуют) выбираем
//их значения в приложение привязываем с соответствующие поля "Имя" и "Номер":
while (cursor.moveToNext()) {
String contact_id = cursor.getString(cursor.getColumnIndex( _ID ));
String name = cursor.getString(cursor.getColumnIndex(DISPLAY_NAME));
int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(HAS_PHONE_NUMBER)));
//Получаем имя:
if (hasPhoneNumber > 0) {
nameKontakt=name;
Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null,
Phone_CONTACT_ID + " = ?", new String[] { contact_id }, null);
//и соответствующий ему номер:
while (phoneCursor.moveToNext()) {
phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
numberKontakt=phoneNumber;
this.spisokKontaktov.put(numberKontakt, nameKontakt);
this.nameNomer.put(nameKontakt, numberKontakt);
Log.i(TAG, "acran1 контакт с именем "+nameKontakt+numberKontakt);
}
}
}
}
TestDatabase();
} catch (NumberFormatException e) {
Log.i(TAG, "acran1 ошибка при вытаскивании списка контактов из телефона acran1");
}
}
// заполняем базу данных по умолчанию
private void TestDatabase () {
SQLiteDatabase database = dbHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
for (String s:this.spisokKontaktov.keySet()){
Cursor cur = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_PHONE}, DBHelper.KEY_PHONE + " = ?", new String[] {s}, null, null, null);
boolean k=cur.moveToFirst();
try {
if (k==false){
contentValues.put(DBHelper.KEY_PHONE, s);
contentValues.put(DBHelper.KEY_KLUCH, "3259DA");
database.insert(DBHelper.TABLE_CONTACTS, null ,contentValues);
Log.i(TAG, "acran1 запись с контактом успешно добавлена в БД "+ s);
} else {
Log.i(TAG, "acran1 ИСКЛЮЧЕНИЕ при добавление контакта в БД");
}
} catch (Exception e) {
Log.i(TAG, "acran1 ошибка добавления записи"+ s);
}
}
}
public void button3 (View view){
switch (view.getId()) {
case(R.id.button):
Intent intent=new Intent(this, acran2.class);
startActivity(intent);
break;
default: break;
}
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onRestart() {
super.onRestart();
Intent intent=new Intent(this, acran1.class);
startActivity(intent);// Always call the superclass method first
// Activity being restarted from stopped state
}
@Override
protected void onResume() {
super.onResume();
listView=(ListView)findViewById(R.id.listView);
List<String> items=initData();
ArrayAdapter<String> adapter=new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
count=count-1;
String selectedItem = massivArray[count-position][1];
Intent intent1=new Intent(getApplicationContext(), acran2_2.class);
intent1.putExtra("name", massivArray[count-position][1]);
intent1.putExtra("nomer", massivArray[count-position][0]);
startActivity(intent1);
// установка текста элемента TextView
// selection.setText(selectedItem);
}
});
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я новичок в Java, и вот недавно занялась изучением серверовНачала с Tomcat и с ним проблем не возникло, затем я перешла на Glassfish
Всем доброго времени суток, пожалуйста, помогитеПроблема в том, что уведомления мои показываются раньше времени
Делаю интернет магазин и столкнулся с проблемой создания корзиныЕсть два варианта: