2013-08-21 1 views
0

J'essaie de développer une application de suivi de localisation simple et j'ai utilisé broadcastReceivers. J'utilise la méthode simple d'envoi de SMS pour obtenir l'emplacement de l'appareil. J'essaie d'obtenir des commentaires après l'envoi et la réception de SMS. mais je reçois une erreur lors de l'enregistrement des récepteurs. erreur que j'obtiens est La méthode registerReceiver (BroadcastReceiver, IntentFilter) est indéfinie pour le type SMSReceiver.MyLocationListener. S'il vous plait, j'ai besoin de votre aide avec ceci.La méthode registerReceiver (BroadcastReceiver, IntentFilter) n'est pas définie pour le type SMSReceiver

Voici mon code:

private class MyLocationListener implements LocationListener 
    { 

     @Override 
     public void onLocationChanged(Location loc) 
     { 

      if(loc!=null) 
      { 
       //send a sms containing the current location 
       SmsManager sms = SmsManager.getDefault(); 
       sms.sendTextMessage(senderTel, null, "http://maps.google.com/maps?q" + loc.getLatitude() + "," + loc.getLongitude(), null, null); 
       BroadcastReceiver smsSentReceiver = new BroadcastReceiver() 
       { 

        @Override 
        public void onReceive(Context arg0, Intent arg1) 
        { 
         switch(getResultCode()) 
         { 
          case Activity.RESULT_OK: 
           Toast.makeText(arg0, "SMS sent", Toast.LENGTH_LONG).show(); 
           break; 
          case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
           Toast.makeText(arg0, "generic failure", Toast.LENGTH_LONG).show(); 
           break; 
          case SmsManager.RESULT_ERROR_NO_SERVICE: 
           Toast.makeText(arg0, "No service", Toast.LENGTH_LONG).show(); 
           break; 
          case SmsManager.RESULT_ERROR_NULL_PDU: 
           Toast.makeText(arg0, "Null PDU", Toast.LENGTH_LONG); 
           break; 
          case SmsManager.RESULT_ERROR_RADIO_OFF: 
           Toast.makeText(arg0, "Radio Off", Toast.LENGTH_LONG).show(); 
           break; 
         } 

        } 

       }; 
       // stop listening for location change 
       lm.removeUpdates(locationListener); 
       smsDeliveredReceiver= new BroadcastReceiver() 
       { 

        @Override 
        public void onReceive(Context arg0, Intent arg1) 
        { 
         switch(getResultCode()) 
         { 
         case Activity.RESULT_OK: 
          Toast.makeText(arg0, "SMS delivered", Toast.LENGTH_LONG).show(); 
          break; 
         case Activity.RESULT_CANCELED: 
          Toast.makeText(arg0, "SMS not delivered", Toast.LENGTH_LONG).show(); 
          break; 
         } 

        } 

       }; 
       registerReceiver(smsDeliveredReceiver, new IntentFilter(DELIVERED)); 

Répondre

7

Vous avez besoin d'un contexte d'appeler registerReceiver(); , une activité ou un service par exemple.

Ce serait fait comme ceci:

theContext.registerReceiver(smsDeliveredReceiver, new IntentFilter(DELIVERED));

Questions connexes