【问题标题】:How to know about the apps installed on the android device如何了解安卓设备上安装的应用程序
【发布时间】:2014-05-06 12:26:28
【问题描述】:

我正在开发一个基于网络的移动应用程序,用户可以在其中选择不同的应用程序,当点击安装时,它将打开该应用程序的 Google-play-store 链接。用户现在可以从播放商店安装应用程序。但是,playore 将作为一个单独的窗口打开。

这样,如果用户选择安装多个应用程序,将会打开多个 Playstore 窗口。

我希望在安装完成后一个接一个地打开 playstore 窗口,但是,从移动浏览器(因为这不是 apk 并且使用 HTML/Java 脚本),很难知道一个应用程序是否是安装在设备上(出于安全原因)。我已阅读有关Google purchase status APIs 的信息。但这需要几个字段,如 package-id、product-id、购买令牌来获取应用的购买状态。

谁能帮我解决我上面提到的场景?我可以使用 Google 购买或 Google Wallet API 来解决我的问题吗?如果有人可以为此提出任何其他解决方案,那就太好了。

提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    不,从 HTML 无法知道运行 Web 应用程序的设备上安装了哪些 apk。

    Google 购买 API 用于应用内购买 - 它们也不会告诉您用户购买了哪些应用(而且购买的应用并不等于安装的应用)。

    正如 Booger 的回答所提到的,如果您放弃从 HTML 中执行此操作,并编写一个可安装的应用程序,那么您可以了解其他已安装的应用程序(这不需要特定的权限)。

    【讨论】:

    • 感谢您的快速回复。你会建议任何其他方法来实现我的要求。现在,我设置了一个计时器,每隔 30 秒就会弹出下一个 Google Play 商店窗口。这样,如果页面显示 3 个应用程序并且用户选择了所有 3 个应用程序,则第一个立即弹出,第二个在 30 秒后弹出,第三个在 60 秒后弹出。如果您能提出任何更好的想法,我将不胜感激。
    • 作为用户,我会发现这种定时弹出行为非常烦人。您的要求根本不可能——如果您坚持使用 HTML,那么您将无法控制安装过程。即使您将某人发送到 Google Play 商店网页,也不能保证他们最终会安装该应用程序 - 他们的设备可能不兼容,他们可能在地理上被该应用程序屏蔽,他们可能会取消等
    • 谢谢。看来你是对的。但是,我想知道 Google Play 商店怎么可能。我可以看到安装在 Play 商店网页中的应用程序。请您告诉我我对游戏商店的理解是否正确?
    【解决方案2】:

    要了解设备上当前安装了哪些应用,您可以使用PackageManager 查询您的设备并获取此信息。

    您可以注册一个广播,当设备上安装了应用程序时,系统会通知您。

    要注册此广播,请在清单中包含以下内容:

    <receiver
            android:name="com.yourpackage.service.InstallReceiver"
            android:exported="false" >
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
    
                <data android:scheme="package" />
            </intent-filter>
        </receiver>
    

    然后您将创建一个名为 InstallReceiver 的类,并在其中包含类似的内容:

    public class InstallReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(final Context context, final Intent intent) {
            final String packageLink = intent.getData().toString();
    
                EasyTracker.getInstance().setContext(context);
                final Tracker trackerV2 = EasyTracker.getTracker();
                trackerV2.trackEvent("app_action", "installed", packageLink, null);
    
        }
            ....
    

    【讨论】:

    • 感谢您的快速回复。但是您提供的解决方案需要在设备上安装一个应用程序。但是,我的要求是,我想从网页(HTML/java 脚本)了解设备中安装的应用程序。该网页实际上会重定向到 Google Play 商店以安装应用程序。现在,可以并行安装应用程序,但我希望它一个接一个地顺序安装,为此我应该知道是否安装了前一个应用程序,然后再重定向到下一个应用程序的 playstore。
    • 同意如果没有安装应用程序,您将无法做您想做的事情(即无法做您要求的事情)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多