【问题标题】:How can I check if the Android Market is installed on my user's device?如何检查我的用户设备上是否安装了 Android 电子市场?
【发布时间】:2011-09-20 08:13:39
【问题描述】:

我怎样才能写一个代码来告诉我你的安卓手机上安装了安卓市场?

【问题讨论】:

    标签: android google-play


    【解决方案1】:

    有两种方法。您可以使用已经提到的getPackageManager()getApplicationInfo()(如果找不到包,则会抛出PacketManager.NameNotFoundException - 请参阅here)。 Android Market 的包名是com.android.vending

    但是,您也可以创建一个虚拟意图来搜索市场并检查其处理方式。如果结果列表至少有一个条目,则可以确定 Android Market 已安装:

    Intent market = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=dummy"));
    PackageManager manager = getPackageManager();
    List<ResolveInfo> list = manager.queryIntentActivities(mmarket, 0);
    

    【讨论】:

    • “com.android.vending”是否也是使用“MyApps”应用程序的 Honeycomb(或更高版本)设备上的 packageName?此外,“market://”意图检查也不可靠,因为其他市场应用程序也使用它。
    • 关于 com.android.vending 和 Honeycomb,我无法确定。但是,Android 开发人员在引用 com.android.vending 时没有任何 Honeycomb 特定的注释(例如:developer.android.com/guide/publishing/licensing.html),所以我认为它可以按预期工作。
    • 在 Kindle Fire 上,亚马逊的 App Store 会响应 market:// URI。
    • @BrianPellin 你的意思是当我通过 market:// URI 传递意图时,亚马逊设备仍然可以处理它并将用户转发到亚马逊应用商店吗?我知道如果我这样做我无法上传到亚马逊应用商店,但如果我不关心这个怎么办。
    【解决方案2】:

    这是我所做的(假设浏览器存在):

    Intent market = new Intent(Intent.ACTION_VIEW).setData(Uri
            .parse("market://details?id=com.example.app"));
    
    
    Intent website = new Intent(Intent.ACTION_VIEW).setData(Uri
            .parse("http://play.google.com/store/apps/details?id=com.example.app"));
    
    try {
    
        startActivity(market);
    
    } catch (ActivityNotFoundException e) {
    
        startActivity(website);
    
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 1970-01-01
      • 2015-06-07
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多