如何从 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/