เปิดลิงค์ของ google play store ใน Android เวอร์ชันมือถือ


88

ฉันมีลิงค์ของแอพอื่น ๆ ในแอพล่าสุดของฉันและฉันก็เปิดมันด้วยวิธีนั้น

Uri uri = Uri.parse("url");
Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
startActivity(intent);

รหัสนี้จะเปิดเวอร์ชันเบราว์เซอร์ของ Google Play Store

เมื่อพยายามเปิดจากโทรศัพท์ของฉันโทรศัพท์จะแจ้งว่าฉันต้องการใช้เบราว์เซอร์หรือ Google Play หรือไม่และหากฉันเลือกอันที่สองระบบจะเปิด Google Play Store เวอร์ชันมือถือ

คุณบอกฉันได้ไหมว่าสิ่งนี้เกิดขึ้นพร้อมกันได้อย่างไร? ฉันหมายถึงไม่ถามฉัน แต่เปิด Google Play เวอร์ชันมือถือโดยตรงซึ่งเป็นเวอร์ชันที่ฉันเห็นขณะเปิดจากโทรศัพท์โดยตรง


1
ฉันหวังว่าย่อหน้าที่สองถึงสุดท้ายจะเป็นจริงสำหรับฉัน การใช้ลิงก์ http พบได้ที่นี่: developer.android.com/distribute/googleplay/promote/…ไม่แจ้งให้ผู้ใช้เลือกแอปหรือเบราว์เซอร์ มันจะถือว่าเบราว์เซอร์เสมอ ขออภัยฉันไม่สามารถใช้market://โปรโตคอลได้เช่นกัน มีใครเห็นพฤติกรรมนี้อีกไหม
SilithCrowe

คำตอบ:


265

คุณจะต้องใช้marketโปรโตคอลที่ระบุ:

final String appPackageName = "com.example"; // Can also use getPackageName(), as below
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));

โปรดทราบว่าสิ่งนี้จะขัดข้องในอุปกรณ์ใด ๆ ที่ไม่ได้ติดตั้ง Market ไว้ (ตัวจำลองเป็นต้น) ดังนั้นฉันขอแนะนำสิ่งต่างๆเช่น:

final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName)));
}

ในขณะที่ใช้getPackageName()จากContextหรือคลาสย่อยเพื่อความสม่ำเสมอ (ขอบคุณ@cprcrack !) ท่านสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับตลาด Intent ของที่นี่: การเชื่อมโยง


การเปิดสิ่งต่อไปนี้ในเบราว์เซอร์ไม่ได้เปิด Google Play: market: // details? id = pandora
IgorGanapolsky

1
ID คือชื่อแพ็กเกจไม่ใช่ชื่อแอป ลองmarket://details?id=com.PandoraTV(สมมติว่านี่คือแอปที่คุณต้องการ)
Eric

9
คำตอบนี้เกี่ยวกับการใช้market://คำนำหน้าจากแอปของคุณเองไม่ใช่จากเว็บไซต์ผ่านเบราว์เซอร์ ฉันสามารถยืนยันถึงฟังก์ชันการทำงานของมัน (ในเวอร์ชัน 2.3, 3.x, 4.0, 4.1 และ 4.2) และใช้งานได้กับเบราว์เซอร์หุ้น Chrome Beta 25 และ Chrome 18
Eric

1
ใช่ Chrome เป็นแอป แต่ต้องการให้ผู้ผลิต [Google] ใช้รหัสนี้ไม่ใช่ผู้ที่ [คุณ] สร้างเว็บไซต์ ตามที่กล่าวมารหัสนี้มีไว้เพื่อช่วยผู้ที่กำลังจัดโครงสร้างลิงก์โดยเฉพาะจากแอปของตน
Eric

2
คุณสามารถใช้getPackageName()เพื่อดึงรหัสแอปโดยอัตโนมัติ
cprcrack

6

โค้ดด้านล่างนี้อาจช่วยคุณในการแสดงลิงค์แอปพลิเคชันของ google play pain ในเวอร์ชันมือถือ

สำหรับลิงค์แอปพลิเคชัน:

Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName());
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);

  try {
        startActivity(myAppLinkToMarket);

      } catch (ActivityNotFoundException e) {

        //the device hasn't installed Google Play
        Toast.makeText(Setting.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();
              }

สำหรับลิงค์นักพัฒนา:

Uri uri = Uri.parse("market://search?q=pub:" + YourDeveloperName);
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);

            try {

                startActivity(myAppLinkToMarket);

            } catch (ActivityNotFoundException e) {

                //the device hasn't installed Google Play
                Toast.makeText(Settings.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();

            } 

3

คุณสามารถใช้ไลบรารีAndroid Intentsเพื่อเปิดหน้าแอปพลิเคชันของคุณที่ Google Play ได้ดังนี้:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);

2
โปรดทราบว่าคำตอบแบบลิงก์เท่านั้นไม่ได้รับการสนับสนุนคำตอบ SO ควรเป็นจุดสิ้นสุดของการค้นหาวิธีแก้ปัญหา (เทียบกับการหยุดการอ้างอิงอื่น ๆ ซึ่งมักจะค้างเมื่อเวลาผ่านไป) โปรดพิจารณาเพิ่มเรื่องย่อแบบสแตนด์อโลนที่นี่โดยเก็บลิงก์ไว้เป็นข้อมูลอ้างอิง
kleopatra

4
การระบุข้อจำกัดความรับผิดชอบว่านี่คือไลบรารีของคุณและฟังก์ชันจะถูกนำไปใช้ในลักษณะเดียวกับคำตอบที่ยอมรับจะเป็นประโยชน์
ta.speot.is


1

คุณตรวจสอบได้ว่าติดตั้งแอปGoogle Play Storeแล้วหรือไม่และหากเป็นกรณีนี้คุณสามารถใช้โปรโตคอล"market: //"ได้

final String my_package_name = "........."  // <- HERE YOUR PACKAGE NAME!!
String url = "";

try {
    //Check whether Google Play store is installed or not:
    this.getPackageManager().getPackageInfo("com.android.vending", 0);

    url = "market://details?id=" + my_package_name;
} catch ( final Exception e ) {
    url = "https://play.google.com/store/apps/details?id=" + my_package_name;
}


//Open the app page in Google Play store:
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);

0

เปิดหน้าแอปบน Google Play:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.