Компонент Open React Native из Native Java Activity в Android

Как я могу открыть определенный компонент моего приложения React Native из Native Android Activity в Java?

Вот мой вариант использования:
Я регистрирую службу получения уведомлений в своей части Android, активность Android (назовите ее Activity1) назначается в действии, которое немедленно открывается при получении уведомления (независимо от того, открыто приложение или закрыто). Теперь, как я могу открыть компонент React Native из Activity(Activity1)?

1 ответ

Я прочитал " Интеграция с Android Existing Apps Doc"- это открытый корневой компонент (с использованием пакета), а не конкретный компонент.

я должен открыть конкретный компонент реагировать родной JS при выключении экрана (экран блокировки)

** Я использую выставочную платформу.

   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);
            }


        }
    }
}
Другие вопросы по тегам