java - 从 Android 中的 Native Java Activity 打开 React Native 组件

标签 java android react-native push-notification onesignal

如何从 Java 中的原生 Android Activity 打开我的 React Native 应用程序的特定组件?

这是我的用例:
我在我的 android 部分注册了一个通知接收器服务,一个 android Activity (命名为 Activity1)被分配到 Action 中,当收到通知时立即打开(无论应用程序是打开还是关闭)。现在如何从 Activity(Activity1) 打开 React Native 组件?

最佳答案

我读了'Integration with Android Existing Apps Doc ' 它是开放的根组件(使用 bundle),而不是特定的组件。

我必须在屏幕关闭(锁定屏幕)时打开特定的 react native js 组件

**我使用expo framework .

   public class UnlockActivity extends ReactActivity implements DefaultHardwareBackBtnHandler {
    //static constants


    //
    private ReactRootView mReactRootView;
    private ReactInstanceManager mReactInstanceManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mReactRootView = new ReactRootView(this);
        mReactInstanceManager = ((MainApplication) getActivity().getApplication())
                .getReactNativeHost()
                .getReactInstanceManager();
        // The string here (e.g. "MyReactNativeApp") has to match
        // the string in AppRegistry.registerComponent() in index.js
        mReactRootView.startReactApplication(mReactInstanceManager, "LockScreen", null);

        setContentView(mReactRootView);
    }

接收者

public class LockScreenReceiver extends BroadcastReceiver {
//Member Variable
private TelephonyManager telephonyManager   =   null;
private boolean isPhoneIdle                 =   true;

private PhoneStateListener phoneListener    =   new PhoneStateListener()
{
    @Override
    public void onCallStateChanged(int state, String incomingNumber)
    { //Member Object
        switch(state){
            case TelephonyManager.CALL_STATE_IDLE :
                isPhoneIdle = true;
                break;
            case TelephonyManager.CALL_STATE_RINGING :
                isPhoneIdle = false;
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK :
                isPhoneIdle = false;
                break;
        }
    }
};



//Construc

tor
    public LockScreenReceiver() {
    }



    //Override Method
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
        {
            if(telephonyManager == null)
            {
                telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
                telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
            }


            if(isPhoneIdle)
            {
                Intent i = new Intent(context, UnlockActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
            }


        }
    }
}

关于java - 从 Android 中的 Native Java Activity 打开 React Native 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374837/

相关文章:

java - 将项目导出为可运行 jar 时无法调用外部 Bash 程序

java - 如何使用 Grizzly 在相同的基本 url 上提供静态内容和资源

javascript - 通过 REST API 响应 native /Spring Boot,值为 0 或 null

java - 更新方法不会保存到Grails中的数据库

java - 多个线程可以同时等待一个对象吗?

java - 静态ViewHolder模式。那么这个静态 Viewholder 中的 onClick 的模式是什么?

react-native - 无法找到 EventDispatcher React Native 的模块

javascript - 未考虑 React native 包更改

android - 如何在 SimpleCursorAdapter 中自定义 TextView - Android

java - 安卓 TCP : error EHOSTUNREACH