簡體   English   中英

從Android中的Native Java Activity打開React Native組件

[英]Open React Native component from Native Java Activity in Android

如何從Java的本機Android活動打開React Native應用程序的特定組件?

這是我的用例:
我在我的android部分中注冊了一個通知接收器服務,在活動中分配了一個android活動(命名為Activity1),該活動在收到通知時立即打開(無論應用是打開還是關閉)。 現在如何從Activity(Activity1)打開React Native組件?

我讀了“ 與Android現有應用程序文檔集成 ”,它是開放的根組件(使用捆綁包),而不是特定的組件。

我必須在屏幕關閉(鎖定屏幕)時打開特定的React Native JS組件

** i使用expo框架

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


        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM