Guest User

Untitled

a guest
Mar 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. package com.sample.reactapp;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.net.Uri;
  6. import android.os.Build;
  7. import android.os.Bundle;
  8. import android.provider.Settings;
  9. import android.view.KeyEvent;
  10. import android.widget.Toast;
  11.  
  12. import com.facebook.react.ReactInstanceManager;
  13. import com.facebook.react.ReactRootView;
  14. import com.facebook.react.common.LifecycleState;
  15. import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
  16. import com.facebook.react.shell.MainReactPackage;
  17.  
  18. public class ReactNativeActivity extends Activity implements DefaultHardwareBackBtnHandler {
  19.  
  20. private final int OVERLAY_PERMISSION_REQ_CODE = 1; // Choose any value
  21. private ReactRootView mReactRootView;
  22. private ReactInstanceManager mReactInstanceManager;
  23.  
  24. public static void launchReactActivity(Activity activity) {
  25. activity.startActivity(new Intent(activity, ReactNativeActivity.class));
  26. }
  27.  
  28. @Override
  29. protected void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31.  
  32. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  33. if (!Settings.canDrawOverlays(this)) {
  34. Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
  35. Uri.parse("package:" + getPackageName()));
  36. startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
  37. }
  38. }
  39.  
  40. mReactRootView = new ReactRootView(this);
  41. mReactInstanceManager = ReactInstanceManager.builder()
  42. .setApplication(getApplication())
  43. .setBundleAssetName("index.android.bundle")
  44. .setJSMainModulePath("index")
  45. .addPackage(new MainReactPackage())
  46. .setUseDeveloperSupport(BuildConfig.DEBUG)
  47. .setInitialLifecycleState(LifecycleState.RESUMED)
  48. .build();
  49. // The string here (e.g. "MyReactNativeApp") has to match
  50. // the string in AppRegistry.registerComponent() in index.js
  51. mReactRootView.startReactApplication(mReactInstanceManager, "reactApp", null);
  52.  
  53. setContentView(mReactRootView);
  54. }
  55.  
  56. @Override
  57. public void invokeDefaultOnBackPressed() {
  58. super.onBackPressed();
  59. }
  60.  
  61. @Override
  62. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  63. if (requestCode == OVERLAY_PERMISSION_REQ_CODE)
  64. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
  65. if (!Settings.canDrawOverlays(this))
  66. Toast.makeText(this, "Grant SYSTEM ALERT WINDOW Permission", Toast.LENGTH_SHORT).show();
  67. }
  68.  
  69. @Override
  70. protected void onPause() {
  71. super.onPause();
  72. if (mReactInstanceManager != null) mReactInstanceManager.onHostPause(this);
  73. }
  74.  
  75. @Override
  76. protected void onResume() {
  77. super.onResume();
  78. if (mReactInstanceManager != null) mReactInstanceManager.onHostResume(this, this);
  79. }
  80.  
  81. @Override
  82. protected void onDestroy() {
  83. super.onDestroy();
  84. if (mReactInstanceManager != null) mReactInstanceManager.onHostDestroy(this);
  85. if (mReactRootView != null) mReactRootView.unmountReactApplication();
  86. }
  87.  
  88. @Override
  89. public void onBackPressed() {
  90. if (mReactInstanceManager != null) mReactInstanceManager.onBackPressed();
  91. else super.onBackPressed();
  92. }
  93.  
  94. @Override
  95. public boolean onKeyUp(int keyCode, KeyEvent event) {
  96. if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) {
  97. mReactInstanceManager.showDevOptionsDialog();
  98. return true;
  99. }
  100. return super.onKeyUp(keyCode, event);
  101. }
  102. }
Add Comment
Please, Sign In to add comment