2016-07-21 9 views
2

Ich habe einen BroadCastReciver in meiner App, die für eingehende SMS zu hören. Ich möchte, wenn SMS empfangen, öffnen Sie die Google-Karte über die Absicht. Das ist mein Code, aber ich weiß nicht, wo ist mein Fehler. Danke für jede Hilfe.Absicht zu Google Karte funktioniert nicht

BroadcastReciver.class:

public class IncomingSms extends BroadcastReceiver { 

    // Get the object of SmsManager 
    final SmsManager sms = SmsManager.getDefault(); 

    public void onReceive(Context context, Intent intent) { 

     // Retrieves a map of extended data from the intent. 
     final Bundle bundle = intent.getExtras(); 

     try { 

      if (bundle != null) { 

       final Object[] pdusObj = (Object[]) bundle.get("pdus"); 

       for (int i = 0; i < pdusObj.length; i++) { 
        SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 
        String phoneNumber = currentMessage.getDisplayOriginatingAddress(); 
        String senderNum = phoneNumber; 
        String message = currentMessage.getDisplayMessageBody(); 
        startAct(message, context); 
       } // end for loop 
      } // bundle is null 

     } catch (Exception e) { 
      Log.e("SmsReceiver", "Exception smsReceiver" + e); 

     } 
    } 
    private void startAct(String message, Context con) { 

     double Mylatitude = 12; 
     double Mylongitude = 11; 
     GPSTracker tracker = new GPSTracker(con); 
     if (tracker.canGetLocation()) { 
      Mylatitude = tracker.getLatitude(); 
      Mylongitude = tracker.getLongitude(); 
     } 

     String location = message; 
     String ACC_lat = location.substring(0, location.indexOf(",")); 
     String ACC_lang = location.substring(location.indexOf(",") + 1, location.length()); 
     Toast.makeText(con, ACC_lang + "^" + ACC_lat, Toast.LENGTH_LONG).show(); 
     Intent mapIntent = new Intent(android.content.Intent.ACTION_VIEW, 
       Uri.parse("http://maps.google.com/maps?saddr=" + Mylatitude + "," + Mylongitude + "&daddr=" + ACC_lat + "," + ACC_lang)); 
    con.startActivity(mapIntent); 

    } 

Ich habe es auch in manifest.xml Datei

+0

So prüfen Sie, dass Sie Breite korrigiert haben, Längengrad, ACC_lat und ACC_lang? –

+0

Drucken Sie Ihre Protokolle, wenn möglich. Und wo bekommst du ein Problem? Benutzt du androidM? – Drv

Antwort

0

Sie müssen URI in zwei Teile spalten, eine in costructor of Intent verwenden und andere als Paket. Hier ist more details, wie Absichten gesendet werden.

Probe:

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194"); 
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); 
mapIntent.setPackage("com.google.android.apps.maps"); 
if (mapIntent.resolveActivity(getPackageManager()) != null) { 
    startActivity(mapIntent); 
}