сохранение входящих уведомлений WhatsApp в локальную базу данных

Я создаю приложение для Android, которое будет прослушивать уведомление WhatsApp, сохранять его и отображать... я использовал notificationlistenerService для этого... я могу прослушивать все уведомления WhatsApp, моя проблема заключается в том, что когда я перезапускаю приложение, все данные из список потерян; (поэтому я хочу сохранить его в БД... и как я могу запустить свое приложение в фоновом режиме, я новичок (нуб), любая помощь, любой совет приветствуется

o/p введите здесь описание изображения

введите здесь описание изображения

public class NotificationService extends NotificationListenerService {

Context context;

@Override

public void onCreate() {

    super.onCreate();
    context = getApplicationContext();

}
@Override

public void onNotificationPosted(StatusBarNotification sbn) {


    String pack = sbn.getPackageName();
  //  String ticker = sbn.getNotification().tickerText.toString();
    String ticker ="";
    if(sbn.getNotification().tickerText !=null) {
        ticker = sbn.getNotification().tickerText.toString();
    }


    Bundle extras = sbn.getNotification().extras;
    String title = extras.getString("android.title");
   // String text = extras.getCharSequence("android.text").toString();
    int id1 = extras.getInt(Notification.EXTRA_SMALL_ICON);
    Bitmap id = sbn.getNotification().largeIcon;

    String text = null;
    if (extras.getCharSequence("android.text") != null) {
        text = extras.getCharSequence("android.text").toString();
    }
    if (text == null) {
        if (extras.get("android.textLines") != null) {
            CharSequence[] charText = (CharSequence[]) extras
                    .get("android.textLines");
            if (charText.length > 0) {
                text = charText[charText.length - 1].toString();
            }
        }
    }

    // Log.i("Package",pack);
    // Log.i("Ticker",ticker);
    // Log.i("Title",title);
    // Log.i("Text",text);

    if(pack.equals("com.whatsapp")) {
        Intent msgrcv = new Intent("Msg");
      //  msgrcv.putExtra("package", pack);
        msgrcv.putExtra("ticker", ticker);
        msgrcv.putExtra("title", title);
        msgrcv.putExtra("text", text);
        if (id !=null) {
         //  if (text.equals("This message was deleted")){
          //     text="some messages may be deleted";
           //    msgrcv.putExtra("text", text);
          // }
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            id.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();
            msgrcv.putExtra("icon", byteArray);

            LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);
        }
    } else{
        return;
    }
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
    Log.i("Msg","Notification Removed");
}
}

person PrincEVergil    schedule 07.04.2018    source источник


Ответы (1)


На самом деле это несложная задача. Но это долгий процесс, чтобы понять его новичку (как вы сами сказали).

Я приведу вас к sqlite учебнику по базе данных в Android [ссылка на учебник ].

В принципе, вы можете использовать любую другую базу данных, но я предлагаю начать с sqlite.

В учебнике объясняется, как создать своего рода wrapper (вспомогательный класс) для соединения sql.

public class DatabaseHelper extends SQLiteOpenHelper {

// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "notes_db";


public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {

    // create notes table
    db.execSQL(Note.CREATE_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + Note.TABLE_NAME);

    // Create tables again
    onCreate(db);
} }

Этот вспомогательный класс поможет вам взаимодействовать с локальной базой данных sqlite.

person FlyingNades    schedule 07.04.2018