[英]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.