2011-11-01 15 views
5

Biliyorum, burada bunlardan ton var, ama tüm gün çözüm deniyorum ve hiçbir yere ulaşmadım. Google'ın dokümanlarındaki örnek ya da burada bulduğum diğer 5 yoldan herhangi biri benim için hiç işe yaramadı. Tipik durumda, bildirimi tıkladığımda durum çubuğunu kapatır ve ekranda yeni hiçbir şey görüntülenmez. Bir hizmetten bildirim oluşturuyorum ve henüz oluşturulmamış yeni bir etkinliği tetiklemek için bildirime ihtiyacım var. Ayrıca, bu etkinliğe niyet yoluyla bilgi aktarmanın bir yoluna da ihtiyacım olacak.bildirime tıklandığında hizmetten aktiviteyi başlatma

Ve evet ... Bu benim kod parçalanmış kalıntıları aşağıda Ne Android

için java olduğunu.

package com.bobbb.hwk2; 

import java.io.FileOutputStream; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.app.Service; 
import android.content.ContentResolver; 
import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.IBinder; 
import android.provider.ContactsContract; 
import android.widget.Toast; 

public class contactBackup extends Service 
{ 
    private NotificationManager nManager; 
    private static final int NOTIFY_ID = 1100; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 

     String ns = Context.NOTIFICATION_SERVICE; 
     nManager = (NotificationManager)getSystemService(ns); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     super.onStart(intent, startId); 

     // inform user that service has started 
     Toast.makeText(getApplicationContext(), R.string.service_started,Toast.LENGTH_LONG).show(); 

     String data = lookUpContacts(); 
     if(saveToSDCard(getResources().getString(R.string.backup_file_name),data)) 
     { 
      Context context = getApplicationContext(); 

      // create the statusbar notification 
      Intent nIntent = new Intent(this,contactViewer.class);//Intent nIntent = new Intent(Intent.ACTION_MAIN); 
      nIntent.setClass(context,contactViewer.class); 
      //nIntent.putExtra("data",data); 


      Notification msg = new Notification(R.drawable.icon,"All contacts records have been written to the file.",System.currentTimeMillis()); 
      // start notification 
      //PendingIntent pIntent = PendingIntent.getService(getApplicationContext(),0,nIntent,PendingIntent.FLAG_UPDATE_CURRENT|Intent.FLAG_FROM_BACKGROUND); 
      PendingIntent pIntent = PendingIntent.getActivity(this,0,nIntent,0); 
      msg.flags = Notification.FLAG_AUTO_CANCEL; 
      msg.setLatestEventInfo(context, 
            "success", 
            "All contacts records have been written to the file.", 
            pIntent); 
      nManager.notify(NOTIFY_ID,msg); 


     } 



    } 

    @Override 
    public void onDestroy() 
    { 
     nManager.cancel(NOTIFY_ID); 
     super.onDestroy(); 
    } 

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

    // function returns string containing information 
    // from contacts 
    public String lookUpContacts() 
    { 
     ... 
    } 

    public boolean saveToSDCard(String fileName, String data) 
    { 
     ... 
    } 

} 

benim soruna neden olan her neyse umut ediyoruz tamir edilebilir bir şey ve ben Tutulma ile elde oldum deli aksaklıkla fazla değildir (gördüğüm başka kimse görünüyor>: U)

Bu sorunu çözmeme yardımcı olabilirseniz, lütfen paylaşın.

teşekkür ederiz DEĞİL Bu özel sorunu yardımcı ama gönderme, stiller, konular veya iyi uygulama hakkında ilgisiz şeyler söylemek zorunda hissediyorum edemiyorsanız, o zaman DO: D

cevap

6

Düzenleme:

sen FLAG_ACTIVITY_NEW_TASK için bayrak eklemek zorunda gidiyoruz:

nIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

Ambassadore H den başlatılması konum olmasıdır app (sistem bildirim çubuğundan).

+0

iyi Bu gerçekten putExtra'yı kullanmıyorsunuz ... Ama tavsiyelerinize dayanarak denedim. niyeti hem niyete hem de beklemedekie işaret eder ve hiçbir fark yaratmamıştır. Yine de teşekkürler. – user980058

+0

düzenlemeniz yaptığım şeyle eşleşiyor. hala zar yok: 3 – user980058

0

İnsanlar kendilerini çok çalıştırdıklarında olan şey budur. XD Yorgun olduğum derslerin hiçbiri işe yaramadı çünkü etkinlik ismimi manifestosunda yanlış yazdım.

Durduğunuz için Teşekkür
0

Sadece

Intent nIntent = new Intent(this,contactViewer.class);//Intent nIntent = new Intent(Intent.ACTION_MAIN); 
     nIntent.setClass(context,contactViewer.class); 
     nIntent.putExtra("data",data); 

    nIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     Notification msg = new Notification(R.drawable.icon,"All contacts records have been written to the file.",System.currentTimeMillis()); 
     // start notification 
     //PendingIntent pIntent = PendingIntent.getService(getApplicationContext(),0,nIntent,PendingIntent.FLAG_UPDATE_CURRENT|Intent.FLAG_FROM_BACKGROUND); 
     PendingIntent pIntent = PendingIntent.getActivity(this,0,nIntent,0); 
     msg.flags = Notification.FLAG_AUTO_CANCEL; 
     msg.setLatestEventInfo(context, 
           "success", 
           "All contacts records have been written to the file.", 
           pIntent); 
     nManager.notify(NOTIFY_ID,msg); 

sonra da

, contactViewer sınıfında değerini almak contactBackup (hizmet sınıfı) aşağıdaki ekleyin

String s=getIntent().getStringExtra("data");