0

Я пишу здесь, потому что сталкиваюсь с проблемой, которую я не мог решить даже после многих исследований и попыток.Локальные уведомления в библиотеке Android

В настоящее время я разрабатываю библиотеку Android, которая состоит только из классов Java и фрагмента. Проблема в том, что мне нужно отправить локальные уведомления пользователю, и нажатие на уведомления должно отправить пользователю обратно в тот вид деятельности, где он был. На данный момент моя библиотека отлично передает уведомления. Но щелчок на уведомлении не имеет никаких действий.

В моем классе reciver (который расширяет класс BroadcastReceiver), когда появляется уведомление, я создаю ожидающее намерение, но я не знаю, что я могу дать в качестве параметров для отправки пользователю активности. Я пробовал использовать фильтры намерений, но он не дал мне никаких результатов.

So Как я могу получить уведомление, отправляющее пользователя в приложение? Лучше всего было бы, если бы я смог отправить уведомление пользователю в действие, в котором создается уведомление (но это фрагмент так ...)

В обычном приложении у меня было бы намерение отправка имени пользователя в класс активности, но в моей библиотеке должны быть только фрагменты.

Может быть, нет никаких проблем, и решение легко, так как я новичок в уведомлениях

Если кто-то здесь есть идея спасибо за помощь мне! : D

И если моя проблема не ясна (Из-за моей плохой английский в качестве примера), не стесняйтесь спросить меня, чтобы добавить информацию ^^

** Редактирование с 29 апреля: ** Мне удалось добиться этого, предоставляя моему вещательного в ожидании намерения каноническое имя моего класса с помощью:

mContext.getClass().getCanonicalName(); 

После того, как в моем классе широковещательного приемника я просто получить класс от имени представляемого класса:

Class<?> activityClass = null; 
    try { 
     activityClass = Class.forName(stringSourceClass); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

ответ

0

проверить Building a notification страницу:

Intent resultIntent = new Intent(this, ResultActivity.class); 
... 
// Because clicking the notification opens a new ("special") activity, there's 
// no need to create an artificial back stack. 
PendingIntent resultPendingIntent = 
    PendingIntent.getActivity(
    this, 
    0, 
    resultIntent, 
    PendingIntent.FLAG_UPDATE_CURRENT 
); 

просто положить вашу деятельность в resultIntent

+0

Вам необходимо прочитать вопрос. OP не имеет «Activity», поэтому он не может создать «Intent», используя 'ResultActivity.class'. Он написал библиотеку, содержащую POJO и фрагмент. –

+0

Давид прав, я не мог этого сделать. Я нашел способ и отредактировал свой пост, если у кого-то будет такая же проблема. – ExxSoldat

0

, как я могу получить уведомление отправки обратно пользователю в приложения?

Это довольно просто:
1. При создании намерения ожидающим метод ("action_name") намерения AddAction вызова;
2. В действии, который вы хотите вызвать (в файле манифеста) внутри тега фильтра-объекта добавить <action android:name="action_name>. Теперь, когда ваше уведомление попытается запустить действие, оно отправит сообщение о намерения в систему, которое будет искать активность с надлежащим действием и запускать ее.
P.S. название действия должно быть уникальным для каждого приложения

+0

Спасибо, даже если мне не удалось сделать то, что я хочу, используя ваш ответ, это был самый близкий ответ. – ExxSoldat

1

Проверьте ниже код ...

public BroadcastReceiver batteryReceiver = new BroadcastReceiver() { 

     @Override 
      public void onReceive(Context context, Intent intent) { 
       try { 
        String title = context.getString(R.string.app_name); 

        Intent intent1 = new Intent(context, YourActivity.class); 

        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),1,intent1,PendingIntent.FLAG_UPDATE_CURRENT); 

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context) 
          .setSmallIcon(R.drawable.ic_launcher) 
          .setContentTitle(title) 
          .setContentText("Hello") 
          .setAutoCancel(false) 
          .setContentIntent(pendingIntent); 

        NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
        notificationManager.notify(1, notificationBuilder.build()); 
       } catch (Exception e) { 
       } 
      } 
     }; 
+0

Вам нужно прочитать вопрос. OP не имеет «Activity», поэтому он не может создать «Intent», используя 'YourActivity.class'. Он написал библиотеку, содержащую POJO и фрагмент. –

+0

Давид прав, я не мог этого сделать. Я нашел способ и отредактировал свой пост, если у кого-то такая же проблема – ExxSoldat

Смежные вопросы