Как скрыть уведомление о клике и показать активность в Android - PullRequest
0 голосов
/ 16 декабря 2011

Я разрабатываю приложение, которое запускает службу для проверки уведомлений.

public class ServiceNotification extends Service{
private ThreadNotification notifica;
private NotificationManager mManager;
private String id;
@Override
public void onCreate() {
    super.onCreate();
    SharedPreferences settings = getSharedPreferences("setting", 0);
    String id = settings.getString("id", "no");
    this.id=id;
    mManager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    //notifica = new ThreadNotification(id,getApplicationContext(),getBaseContext());
}
private void showNotification(int id, String client, String notifica) {
    Notification notification = new Notification(R.drawable.icon, "Notifica da "+client, 10000);
    CharSequence contentTitle = "Notifica da "+client;
    CharSequence contentText = notifica;
    Intent notificationIntent = new Intent();
    notificationIntent.setClassName("package", "package.ActivityNotification");
    notificationIntent.putExtra("title",title);
    notificationIntent.putExtra("notification",notification);
    PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent,Notification.FLAG_AUTO_CANCEL);
    notification.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, contentIntent);
    mManager.notify(id, notification);
}
@Override
public void onStart(Intent intent, int startId) { 
    Thread t = new Thread(new Runnable(){
        public void run(){
            int i =0;
            while(true){
                String page = "http://mysite.com/notification.php?"+id;
                String risposta = "";
                try {
                    URL url = new URL(page);
                    URLConnection connection = url.openConnection();
                    BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                                    connection.getInputStream()));
                    risposta = in.readLine();
                    in.close();
                        String[] all = risposta.split("@@@");
                        String notification = all[0];
                        String title = all[1];
                        showNotification(i++, title, notification);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally{
                    try {
                        Thread.sleep(20000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

            }
        }
    });
    t.start();
}
@Override
public void onDestroy() {
}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

}

, и это действие, которое я хочу загрузить при нажатии уведомления

public class ActivityNotification extends Activity{
private String title,notification;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //this.c=this;
    title = getIntent().getStringExtra("title");
    notification = getIntent().getStringExtra("notification");
    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Notifica da "+title);
    alertDialog.setMessage(notification);
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            alertDialog.cancel();
        }
    });
    alertDialog.setIcon(R.drawable.errore_icon);
    alertDialog.show();
}

}

Отображается уведомление, но когда я нажимаю на уведомление, ничего не происходит.Уведомление все еще остается, а активность не загружается.Что я могу сделать?Можете ли вы помочь мне, пожалуйста, ??

РЕДАКТИРОВАТЬ: с помощью

notification.flags |=Notification.FLAG_AUTO_CANCEL;

Уведомление будет скрыто при нажатии, но активность теперь отображается все еще!

1 Ответ

0 голосов
/ 16 декабря 2011

Решено!Это я был виноват.Я забыл добавить свою активность в мой манифест.

...