【问题标题】:Android intent BOOT_COMPLETED is never launched on Samsung SM-T230 Kitkat 4.4.2 tabletAndroid intent BOOT_COMPLETED 从未在三星 SM-T230 Kitkat 4.4.2 平板电脑上启动
【发布时间】:2014-11-27 12:54:32
【问题描述】:

我正在创建一个 HOME (android.intent.category.HOME) 类型的应用程序,它会在第一个应用程序启动后立即启动另一个应用程序。到目前为止,我一直在活动片段上使用 onResume(),效果很好(意思是在其他 Android 版本的其他平板电脑上),直到我在 SM-T230(Galaxy Tab 4 7" Wifi),具有 Kitkat 4.4.2。

我不知道为什么,但是对于那个平板电脑,“BOOT_COMPLETED”意图永远不会被触发。我尝试过启动许多不同的应用程序,并且每个应用程序都会发生同样的事情。上述意图从未启动。只有在反复按下并返回到 HOME 类型的应用程序后才会启动它(必须重复执行,因为应用程序每次都在 onResume() 第二个应用程序中启动)。如果系统从未启动它,则 wifi 服务、网络共享等将无法运行。

有趣的是,如果我省略了第二个应用程序的启动,则会触发意图。

我正在考虑在 HOME 应用程序片段可见时尝试启动该应用程序,但我不知道该怎么做。有人知道如何做到这一点吗?

另外,如果您遇到同样的问题,我想阅读您的 cmets。

【问题讨论】:

  • 它是单一的广播类型的应用程序还是它也有任何活动???
  • @Kedarnath 这是一个带有android.intent.category.HOME 过滤器的活动。
  • 也请阅读此答案:stackoverflow.com/a/14110475/3330969
  • @Kedarnath 感谢您的链接。我的应用程序是系统应用程序,因此不需要手动激活任何组件。我编辑了帖子并添加了有趣的是,如果我省略了第二个应用程序的启动,intent 会被触发

标签: android android-fragments android-4.4-kitkat android-homebutton bootcompleted


【解决方案1】:

问题是第二个应用在第一个 android 片段可见之前启动。为了解决这个问题,我添加了一个非常小的计时器,它会在超时后启动第二个应用程序。

@Override
public void onResume() {
    super.onResume();
    ...
    getView().postDelayed(scheduleLaunch, 2000);
}

private Runnable scheduleLaunch = new Runnable() {
    @Override
    public void run() {
        if (isAdded()) {
            launchMainApp();
        }
    }
};
【解决方案2】:

你添加权限了吗?

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

【讨论】:

  • 效果很好,直到我在 SM-T230 上尝试过,这意味着他已经获得了许可。
  • 当然。否则,效果很好的声明将毫无意义。
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 2013-12-05
相关资源
最近更新 更多