[Android] كيفية فتح تطبيق خريطة جوجل القياسية من طلبي؟



Answers

يمكنك أيضًا ببساطة استخدام http://maps.google.com/maps كمعرّف URI الخاص بك

String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "&daddr=" + destinationLatitude + "," + destinationLongitude;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);

أو يمكنك التأكد من أنه يتم استخدام تطبيق خرائط Google فقط ، فهذا يوقف ميزة تصفية المرشح (الحوار) من الظهور ، باستخدام

intent.setPackage("com.google.android.apps.maps");

مثل ذلك:

String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "&daddr=" + destinationLatitude + "," + destinationLongitude;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);

أو يمكنك إضافة تصنيفات إلى المواقع عن طريق إضافة سلسلة داخل أقواس بعد كل مجموعة من الإحداثيات كما يلي:

String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "(" + "Home Sweet Home" + ")&daddr=" + destinationLatitude + "," + destinationLongitude + " (" + "Where the party is at" + ")";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);

لاستخدام المستخدمين الموقع الحالي كنقطة انطلاق (للأسف لم أجد طريقة لتسمية الموقع الحالي) ، ثم قم بإيقاف saddr المعلمة saddr كما يلي:

String uri = "http://maps.google.com/maps?daddr=" + destinationLatitude + "," + destinationLongitude + " (" + "Where the party is at" + ")";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);

للتأكد من اكتمالها ، إذا لم يكن لدى المستخدم تطبيق خرائط مثبتًا ، فستكون فكرة جيدة للقبض على ActivityNotFoundException ، كما تنص على ذلكTonyQ ، ثم يمكننا بدء النشاط مرة أخرى بدون تقييد تطبيق الخرائط ، يمكننا التأكد أننا لن نصل إلى التوست في النهاية لأن متصفح الإنترنت هو تطبيق صالح لإطلاق مخطط url هذا أيضًا.

        String uri = "http://maps.google.com/maps?daddr=" + 12f + "," + 2f + " (" + "Where the party is at" + ")";
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
        intent.setPackage("com.google.android.apps.maps");
        try
        {
            startActivity(intent);
        }
        catch(ActivityNotFoundException ex)
        {
            try
            {
                Intent unrestrictedIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
                startActivity(unrestrictedIntent);
            }
            catch(ActivityNotFoundException innerEx)
            {
                Toast.makeText(this, "Please install a maps application", Toast.LENGTH_LONG).show();
            }
        }

تصحيح:

للحصول على الاتجاهات ، يتم دعم هدف التنقل الآن باستخدام google.navigation

Uri navigationIntentUri = Uri.parse("google.navigation:q=" + 12f " +"," + 2f);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, navigationIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Question

بمجرد أن يقوم المستخدم بالضغط على الزر في التطبيق الخاص بي ، أود فتح تطبيق Map Map القياسي وإظهار موقع معين. كيف يمكنني فعل ذلك؟ (بدون استخدام com.google.android.maps.MapView )







في بعض الأحيان إذا لم يكن هناك أي تطبيق مرتبط بـ geo: protocal ، فيمكنك استخدام try-catch للحصول على ActivityNotFoundException للتعامل معه.

يحدث ذلك عند استخدام بعض المحاكي مثل androVM الذي لم يتم تثبيت خريطة جوجل افتراضيا.




Links