【问题标题】:Catch RECEIVE_BOOT_COMPLETED event in android using React-Native使用 React-Native 在 android 中捕获 RECEIVE_BOOT_COMPLETED 事件
【发布时间】:2018-08-24 11:15:56
【问题描述】:

有什么方法可以在设备启动时触发 react-native 中的事件。我可以在本机中为 RECEIVE_BOOT_COMPLETED 设置一个广播接收器,但我想知道这将如何触发我用 React Native 编写的事件。有一个 DeviceEventEmitter 侦听器,但该侦听器将在应用关闭时停止。 请提出一种方法。

【问题讨论】:

    标签: android reactjs react-native


    【解决方案1】:

    有一次,当我想在 Android 操作系统初始化的同时启动应用程序时,我做了类似的事情。

    因此,在这种情况下,您可以只启动主要活动(或在您的上下文中有意义的另一个活动),然后让 react-native 框架完成其余的工作。

    这项工作需要三件事:

    1. 创建一个接收器类来处理启动事件并为您做一些事情,在这种情况下:启动主 Activity 以初始化您的应用;
    2. 在你的 AndroidManifest.xml 中注册上面创建的类并添加用户权限以允许 android 应用接收启动事件(不要忘记步骤);
    3. 重新启动您的设备/模拟器并等待您的应用启动。

    我的代码:

    在我的例子中,我将创建的 BootUpReceiver.java 类放在 MainActivity.java 的同一目录中:

    1. 创建一个名为 BootUpReceiver.java 的类,并将“your_package”替换为您的包名,如下所示:
        package com.your_package;
    
        import android.content.BroadcastReceiver;
        import android.content.Context;
        import android.content.Intent;
        
        import com.your_package.MainActivity;
        
        public class BootUpReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent intent) {
                Intent it = new Intent(context, MainActivity.class);
                it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(it);
            }
        }
    
    1. 在您的 AndroidManifest.xml 上,输入以下内容,并将 receiver 标记放在您的 application 标记内:
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    
        <receiver
                android:enabled="true"
                android:name=".BootUpReceiver">
                  <intent-filter>
                     <action android:name="android.intent.action.BOOT_COMPLETED"/>
                  </intent-filter>
        </receiver>
    

    好吧,我希望这能有所帮助,但如果这还不够,请花点时间查看 React Native 文档的链接,该链接解释了如何将 Android 服务连接到 JS 任务。

    这很容易: https://facebook.github.io/react-native/docs/headless-js-android

    【讨论】:

    • @Anarug,你试过这个吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多