2011-12-16 4 views
0

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

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(); 
} 

}

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

EDIT: с помощью

notification.flags |=Notification.FLAG_AUTO_CANCEL; 

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

+1

Вы пробовали 'уведомлениеIntent.setClassName (" packageName "," ActivityNotification ");'? – futtetennista

+0

уверен! но никак .. – JackTurky

+0

Yup, похоже, вы на самом деле не проходите класс, чтобы начать в ваших намерениях. просто добавьте это, и все должно работать нормально. – AedonEtLIRA

ответ

0

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