Компонент 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);
}
}
}
}