mở liên kết của google play store trong phiên bản di động android


88

Tôi có liên kết của các ứng dụng khác trong ứng dụng mới nhất của mình và tôi mở chúng theo cách đó.

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

mã này mở phiên bản trình duyệt của cửa hàng chơi google.

Khi cố gắng mở từ điện thoại của tôi, điện thoại sẽ nhắc tôi muốn sử dụng trình duyệt hay google play và nếu tôi chọn cái thứ hai, điện thoại sẽ mở phiên bản di động của cửa hàng google play.

Bạn có thể cho tôi biết làm thế nào điều này có thể xảy ra ngay lập tức? Ý tôi là không hỏi tôi mà mở trực tiếp phiên bản di động của google play, phiên bản mà tôi thấy khi mở trực tiếp từ điện thoại.


1
Tôi ước rằng đoạn thứ hai đến cuối cùng đúng với tôi. Sử dụng liên kết http tìm thấy tại đây: developer.android.com/distribute/googleplay/promote/… không nhắc người dùng chọn ứng dụng hoặc trình duyệt. Nó luôn giả định là trình duyệt. Thật không may, tôi cũng không thể sử dụng market://giao thức. Có ai khác nhìn thấy hành vi này không?
SilithCrowe

Câu trả lời:


265

Bạn sẽ muốn sử dụng marketgiao thức được chỉ định :

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

Xin lưu ý rằng điều này sẽ xảy ra trên bất kỳ thiết bị nào chưa cài đặt Market (ví dụ: trình giả lập). Do đó, tôi sẽ đề xuất một cái gì đó như:

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)));
}

Trong khi sử dụng getPackageName()từ Contexthoặc lớp con của chúng để có tính nhất quán (cảm ơn @cprcrack !). Bạn có thể tìm thêm về Mục đích thị trường tại đây: liên kết .


Mở sau trong trình duyệt không mở Google Play: thị trường: // details? Id = pandora?
IgorGanapolsky

1
ID là tên gói, không phải tên ứng dụng. Hãy thử market://details?id=com.PandoraTV(giả sử đây là ứng dụng bạn muốn).
Eric

9
Câu trả lời này là về việc sử dụng market://tiền tố từ ứng dụng của riêng bạn, không phải từ trang web thông qua trình duyệt. Tôi có thể chứng thực cho chức năng của nó (trên các phiên bản 2.3, 3.x, 4.0, 4.1, và 4.2) và nó hoạt động với trình duyệt chứng khoán, Chrome Beta 25 và Chrome 18.
Eric

1
Đúng, Chrome là một ứng dụng, nhưng điều đó sẽ yêu cầu các nhà sản xuất của nó [Google] sử dụng mã này, chứ không phải những người [bạn] tạo ra các trang web. Như hiện tại, mã này là để giúp những người đang cấu trúc các liên kết cụ thể từ ứng dụng của họ.
Eric

2
Bạn có thể sử dụng getPackageName()để tự động truy xuất id ứng dụng.
cprcrack

6

Đoạn mã dưới đây có thể giúp bạn hiển thị link ứng dụng của google play trên phiên bản di động.

Đối với liên kết Ứng dụng:

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();
              }

Liên kết dành cho nhà phát triển:

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

Bạn có thể sử dụng thư viện Android Intents để mở trang ứng dụng của mình trên Google Play như vậy:

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

2
Lưu ý rằng các câu trả lời chỉ có liên kết không được khuyến khích, các câu trả lời SO phải là điểm cuối của quá trình tìm kiếm giải pháp (so với một điểm dừng khác của các tài liệu tham khảo, có xu hướng cũ dần theo thời gian). Vui lòng xem xét thêm một bản tóm tắt độc lập ở đây, giữ liên kết làm tài liệu tham khảo.
kleopatra

4
Sẽ rất hữu ích nếu bao gồm tuyên bố từ chối trách nhiệm rằng đây là thư viện của bạn và chức năng được triển khai khá giống với câu trả lời được chấp nhận.
ta.speot.is


1

Bạn có thể kiểm tra xem ứng dụng Cửa hàng Google Play đã được cài đặt chưa và nếu đúng như vậy, bạn có thể sử dụng giao thức "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

Mở trang ứng dụng trên Google Play:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.