【问题标题】:Find package name for Android apps to use Intent to launch Market app from web查找 Android 应用程序的包名称以使用 Intent 从 Web 启动 Market 应用程序
【发布时间】:2010-05-07 14:52:56
【问题描述】:

我正在创建一个移动网站,其中包含一个页面,人们可以从该页面下载我们推荐的相关应用。我发现instructions 用于创建链接以启动市场,但这假设您是相关应用程序的开发人员并且知道确切的包名称。

除了联系开发者询问外,有什么方法可以获取包名吗?

此外,事实证明,这些说明对于创建 Web 超链接并不真正有效。它们只为您提供一个 URI,供您在另一个 Android 应用程序的 Java 代码字符串中引用。我们的站点在 Drupal 中,所以 Java 无法运行。

对于 iPhone,我发现 easy instructions 可以从 iTunes 商店获取我需要的 URL/链接样式,因此我正在寻找类似的信息。

【问题讨论】:

    标签: android hyperlink google-play android-intent


    【解决方案1】:

    这取决于您想从哪里获取信息。你有很多选择:

    • 如果您有 .apk 的副本,只需将其作为 zip 文件打开并查看 AndroidManifest.xml 文件即可。顶级 <manifest> 元素将具有 package 属性。
    • 如果您在设备上安装了该应用并且可以使用adb 进行连接,则可以启动adb shell 并执行pm list packages -f,它会显示每个已安装apk 的包名称。
    • 如果你只是想手动找几个包名,可以在http://www.cyrket.com/m/android/上搜索app,包名会在URL中显示
    • 您也可以使用 PackageManager 从 Android 应用程序以编程方式执行此操作

    获得包名称后,您只需链接到market://search?q=pname:<package_name>http://market.android.com/search?q=pname:<package_name>。两者都将在 Android 设备上打开市场;后者显然也有可能在其他硬件上工作(目前还没有)。

    【讨论】:

    • 另一种更简单的方法是:转到android market(现在是google play)上的应用页面,检查url。应用程序包位于 ?id= 和 & 之后。
    • developer.android.com/guide/publishing/publishing.html 在这里你可以找到来自google的正式信息
    • adb shell pm list packages -f 为我工作。当我尝试提取 .apk 文件时,AndroidManifest.xml 是二进制文件。
    • 出于某种原因,我需要使用sh 运行pmsh pm list packages -f
    • 以 ZIP 格式打开 APK 并查看包含的 AndroidManifest.xml 无法立即工作,因为 XML 是二进制格式。
    【解决方案2】:

    使用 SDK 中的 aapt 类似

    aapt dump badging yourpkg.apk
    

    这将打印包名称和其他信息。

    这些工具位于
    /build-tools/android-

    /平台工具

    /platforms/android-/tools

    根据 geniusburger 的评论更新。谢谢!

    【讨论】:

    • 我刚刚安装了 ADT 包,在这里找到了它<sdk_home>\build-tools\android-<ver>
    【解决方案3】:

    以下 bash 脚本可用于在 apk 中显示包和活动名称,并通过向其传递 APK 文件来启动应用程序。

    apk_start.sh

    package=`aapt dump badging $* | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g`
    activity=`aapt dump badging $* | grep Activity | awk '{print $2}' | sed s/name=//g | sed s/\'//g`
    echo
    echo package : $package
    echo activity: $activity
    echo
    echo Launching application on device....
    echo
    adb shell am start -n $package/$activity
    

    然后要在模拟器中启动应用程序,只需提供 APK 文件名,如下所示:

    apk_start.sh /tmp/MyApp.apk
    

    当然如果你只是想显示apk的包和活动名称,删除脚本的最后一行。

    您可以使用此脚本以相同的方式停止应用程序:

    apk_stop.sh

    package=`aapt dump badging $* | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g`
    adb shell am force-stop $package
    

    像这样:

    apk_stop.sh /tmp/MyApp.apk
    

    重要提示:aapt 可以在这里找到:

    <android_sdk_home>/build-tools/android-<ver>/aapt
    

    【讨论】:

    • 我爱你!顺便说一句,我正在使用的构建工具版本列出了带有 key launchable-activity 的活动,所以我不得不将 grep Activity 修改为 aapt dump badging $* | grep launchable-activity | awk '{print $2}' | sed s/name=//g | sed s/\'//g
    • 酷...很高兴它有帮助...感谢您的建议...我有一段时间没有做 Android 开发了,所以很高兴知道!
    【解决方案4】:

    下面的代码会将它们列出来:

    adb shell dumpsys package <packagename>
    

    【讨论】:

      【解决方案5】:

      不确定您是否还需要这个,但在 http://www.appbrain.com/ 中,您查找应用程序并且包名称在 url 中。例如:http://www.appbrain.com/app/fruit-ninja/com.halfbrick.fruitninja 是水果忍者的链接。注意粗体

      【讨论】:

        【解决方案6】:

        添加到上述答案: 要在任何 android 设备上查找已安装应用程序的包名称: 转到 Storage/Android/data/

        【讨论】:

          【解决方案7】:

          这里是获取应用程序完整包的简单方法。 我们可以使用 astro 文件管理器应用程序。你可以在安卓市场上买到。 Astro 应用管理器向我们展示了应用的完整包。

          【讨论】:

            【解决方案8】:

            您可以在 Google Play 商店中在线搜索该应用。找到后检查url,例如https://play.google.com/store/apps/details?id=lutey.FTPServer&hl=en

            id参数对应应用的包名。以例子中的url为例,包名是lutey.FTPServer。

            【讨论】:

              【解决方案9】:

              这是一个相当困难的情况,你可以从 apk 文件中获取包名,但我假设你想自动完成。

              AndroLib 有很多应用程序的包名称,但您必须解析它,因为我找不到任何 API。有一个开发部分可能有一些工具可以帮助您。

              祝你好运

              【讨论】:

              • 谢谢。这个问题实际上比我想象的要难,因为我上面链接的说明有其自身的缺陷——它们是用于从应用程序链接到市场,而不是从网站。他们需要 Java,至少可以这么说,我认为 Java 不能很好地与 Drupal 配合使用。
              【解决方案10】:

              一旦您有了包名称,如Chris Smith's answer 所述,您可以/应该为链接使用意图 URL。这是一个special format URL,如果用户已经安装了它,它将启动该软件包,如果没有,则在应用程序页面上打开播放商店......

              intent://#Intent;package=qualified.package.name;end
              

              应用程序需要支持这一点,并将 Activity 标记为可浏览,但很多都支持。

              【讨论】:

                【解决方案11】:
                1. 转到设置应用程序。
                2. 点击存储和 USB。
                3. 点击电话卡。
                4. 点击安卓。
                5. 点击数据。

                现在您可以找到手机中安装的所有应用的包名。

                【讨论】:

                  【解决方案12】:

                  如果您想在手机中获取此信息,那么最好使用“APKit”之类的应用,该应用会显示手机中每个应用的完整软件包名称。然后可以在您的手机中使用此信息。

                  【讨论】:

                    猜你喜欢
                    • 2011-11-24
                    • 2013-05-17
                    • 2011-08-21
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-05-02
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-05-02
                    相关资源
                    最近更新 更多