【问题标题】:notify installation complete from service通知服务安装完成
【发布时间】:2011-10-20 10:08:10
【问题描述】:

我有这段代码

private void initiateInstallation() { 

        Intent intent = new Intent(Intent.ACTION_VIEW); 
        Uri uri = Uri.fromFile(new File("/sdcard/example.apk")); 
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    } 

从我的服务中安装一个名为 example.apk 的应用程序

我想在安装完成后运行一个通知用户安装的活动。我这样做了,除了活动在安装完成之前出现。 问题是在服务中我不能使用 startActivityForResult。因此,我需要一种解决方法,以便仅在安装完成后才能启动通知活动(或者为了示例,只需在服务中使用 Toast 打印一些内容)。 我已经尝试了其他问题的一些答案,例如“服务中 startActivityforResult 的替代方案”,但我仍然无法弄清楚。 我还放了代码,以便可能在那里完成一些事情。

提前致谢...欢迎提出任何建议。

【问题讨论】:

    标签: android service installation status notify


    【解决方案1】:

    您可以收听 PACKAGE_ADDED 广播意图:http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED

    据我所知,这些是安装完成后发送的,您可以从服务中收听。

    请注意,如果应用程序已安装,您将获得 ACTION_PACKAGE_CHANGED(据我所知)。

    此外,您还必须知道包名称,而不仅仅是 apk 名称,因为 Intent 将包含包名称。

    【讨论】:

      【解决方案2】:

      @Pal Szasz 给出的答案在技术上是正确的(据我所知 ;-))。

      但是,根据您在问题中提供的信息,我假设您只想显示通知(无需执行进一步的编程操作)。如果我的假设是正确的,我会恭敬地建议您不要显示这样的通知。这就是为什么:

      Android 系统已经有了向用户传递通知的标准方法。在这种情况下,状态栏将向您显示一条消息,说明新应用程序已成功安装(或在出现错误时未安装)。如果您实施另一个通知渠道,您很可能会因偏离标准的预期行为而使您的用户感到困惑或激怒。

      如果不考虑这种情况,人们也可能会争论这样一个事实,即你在某种意义上也会导致 Android 的碎片化(虽然规模很小,但仍然如此)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        相关资源
        最近更新 更多