#java #android #android-activity #notifications #android-intent
#java #Android #android-активность #уведомления #android-намерение
Вопрос:
Я хочу запустить уведомление. Когда я нажимаю на него, открывается НОВОЕ окно приложения. Вот мой код:
public class Noficitation extends Activity {
NotificationManager nm;
static final int uniqueID = 1394885;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent= new Intent (Intent.ACTION_MAIN);
intent.setClass(getApplicationContext(), SchoolBlichActivity.class);
PendingIntent pi=PendingIntent.getActivity(this, 0, intent, 0);
String body = " body";
String title = "title!";
Notification n =new Notification(R.drawable.table, body, System.currentTimeMillis());
n.setLatestEventInfo(this, title, body, pi);
n.defaults = Notification.DEFAULT_ALL;
n.flags = Notification.FLAG_AUTO_CANCEL;
nm.notify(uniqueID,n);
finish();
}
кстати, если я добавлю nm.cancel(UniqueID) перед finish() , он создаст уведомление и немедленно удалит его…
Спасибо за помощь: D
Ответ №1:
Возможно, вы захотите просто добавить уведомление в панель уведомлений, и когда пользователь нажмет на него, оно запустит фактическое действие. Таким образом, пользователь не будет прерван, что бы он ни делал.
Создайте уведомление в строке состояния следующим образом:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.notification_icon, "Hello", System.currentTimeMillis());
Intent notificationIntent = new Intent(this, myclass.class);
notification.setLatestEventInfo(getApplicationContext(), "My notification", "Hello world!", notificationIntent, PendingIntent.getActivity(this, 0, notificationIntent, 0));
mNotificationManager.notify(1, notification);
http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Комментарии:
1. Да, я думаю, что это то, что он пытается do…..It это может быть просто простой флаг, который он устанавливает для срабатывания при возврате его сообщения на сервер или что-то в этом роде
Ответ №2:
Вы просто пытаетесь открыть окно уведомлений в текущем действии? Потому что, если вы, я не думаю, что вам нужно запускать его с намерением. Обычно вы используете intents только для запуска новых сервисов или действий в своем приложении, если вы не создали пользовательский вид и действие / сервис, которые должны выполняться в окне уведомлений. Я вижу, что вы настроили его в своем собственном классе, и это нормально, но я думаю, что то, как вы это делаете по умолчанию, откроет совершенно новый вид.
Если вам нужно запустить уведомление во время процесса или что-то вроде нажатия кнопки, вам не нужно иметь там намерения ….. или, по крайней мере, я никогда этого не делал 🙂 Чего именно вы пытаетесь достичь с помощью уведомления.
Комментарии:
1. Ну, я запускаю фоновую службу, которая каждые 24 часа проверяет наличие изменений на сайте. если есть изменения, оно запускает уведомление. Я пытался сделать это в обычном классе, но у меня были проблемы с этим… Если приложение не работает на переднем плане, это нормально, потому что оно открывает мое основное действие, когда я нажимаю на уведомление. НО, когда приложение находится на переднем плане, оно открывает новый экран приложения, а затем мне нужно закрыть их оба…
2. Ну, не глядя на остальную часть вашего кода, который запускает уведомление, было бы трудно высказать вам свои мысли по этому поводу. Вы говорите об уведомлении, которое публикуется в фактической панели уведомлений на устройстве? Или это то, что пользователь должен иметь.
3. лол, я ненавижу указывать вам на сайт разработчиков Android, но …… developer.android.com/guide/topics/ui/notifiers/… Если бы я знал немного больше обо всем этом, я мог бы лучше помочь вам 🙂
4. Вы уверены, что ваш серверный скрипт возвращает правильную переменную? В любом приложении, которое я создал до сих пор при работе с настройкой клиент / сервер, я обычно дважды проверяю, что мои значения передаются обратно клиенту. Может быть, вы передаете что-то обратно на телефон, который длинный и должен быть int или что-то глупое в этом роде …….. или вы могли бы опубликовать какой-нибудь другой код класса, который вызывает ваш класс уведомлений, и мы могли бы разобраться в этом для вас 🙂