Soru & Cevap

Android servis içerisinden başka bir servis çağırma

23.10.2015 - 08:07

Merhabalar. Bir servis içinden başka bir servis başlatmaya çalışıyorum ama şu hatayı alıyorum. (java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference) Uygulamayı ilk telefona yüklediğimde; BroadcastReceiver hatayı fırlatan Alarm servis classını çağırıyor. Alarm servis classı mail başlıklarını okuyup belirttiğim anahtar kelimeyle eşleşirse LaunchActivity servis classını çağıracak fakat işlem sırası ReadMail() içerisindeki servis çağırma kısmına gelince NullPointerException hatası fırlatıyor. Bu durumu nasıl düzeltebilirim? Teşekkürler.

public class Alarm extends Service {
private String userName;
private String password;
private String receivingHost;
Context context;

public int onStartCommand(Intent intent, int flags, int startId) {
    final Handler handler = new Handler();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
        handler.post(new Runnable() {
                public void run() {
                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                    StrictMode.setThreadPolicy(policy);
                     String senderPassword=new String("password");
                        String senderUserName=new String("username@gmail.com");
                        Alarm newGmailClient=new Alarm();
                        newGmailClient.setAccountDetails(senderUserName, senderPassword);
                        newGmailClient.readGmail();
                }
            });
        }
    };
    Timer timer = new Timer();
    timer.schedule(doAsynchronousTask, 10, 120000);

     return super.onStartCommand(intent, flags, startId);


  };



public void setAccountDetails(String userName,String password){  
    this.userName=userName;//sender's email can also use as User Name
    this.password=password;
}


public void readGmail(){
    this.receivingHost="imap.gmail.com";//for imap protocol
    Properties props2=System.getProperties();
    props2.setProperty("mail.store.protocol", "imaps");
    Session session2=Session.getInstance(props2, null);
        try {
                Store store=session2.getStore("imaps");
                store.connect(this.receivingHost,this.userName, this.password);
                Folder folder=store.getFolder("INBOX");//get inbox
                folder.open(Folder.READ_ONLY);//open folder only to read
                Message message[]=folder.getMessages();
                String key= "Hey";
                String subject;
                for(int i=0;i<message.length;i++){
                    System.out.println(message[i].getSubject());
                    subject=message[i].getSubject();

                 if(subject.equals(key)){
                     System.out.println("inside");
Intent mTutorial = new Intent(Alarm.this, LaunchActivity.class); 

this.startService(mTutorial); 

//I want to call service class in here. LaunchActivity is my service class.



                 }
                    //Log.d(message[i].getSubject(),message[i].getSubject());
                }
                folder.close(true);
                store.close();
        } catch (Exception e) {
               System.out.println(e.toString());
        }
}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
public void onDestroy() {


    // TODO Auto-generated method stub
    super.onDestroy();
    Log.d("", "FirstService destroyed");
}


}

 

120 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user emrecan89
emrecan89
23.10.2015 - 08:56

Kod hatasız çalışıyor fakat servis çağırma satırına (60. satırda) gelince belirttiğim hatayı fırlatıyor fakat servis çağırılamasada uygulamam çalışmaya devam ediyor sonlandırılmıyor. 

Profile picture for user ihsanemreyildirim
ihsanemreyildirim
23.10.2015 - 08:24

Prob ile  session nesnelerini bi kontrol edermisin bi debug edip null degeri aliyor gibi bu nesneler application context le aliniyodu sanki oyle hatirliyorum bi kontrol et bnc