2016-09-06 38 views
4

我正在使用意圖啓動我的React-Native應用程序,並試圖瞭解如何獲取我在意圖反應本機代碼中放置的變量。這可能來自react-native內部,還是我必須編寫一些java代碼才能得到它?React-Native Android - 從意圖獲取變量

我用來啓動應用程序的代碼:

Intent intent = new Intent(this, MainActivity.class); 
    Intent.putExtra("alarm",true); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 

謝謝!

+0

什麼是不以'getIntent工作「第二項活動? –

+0

第二項活動是反應原生的。所以我的問題是我如何獲得反應原生getIntent。 –

回答

3

試試這個以獲取意圖參數在react-native應用程序。

在我的本機應用程序,我用這個代碼:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.my.react.app.package"); 
launchIntent.putExtra("test", "12331"); 
startActivity(launchIntent); 

在反應本地的項目,我MainActivity.java

public class MainActivity extends ReactActivity { 

@Override 
protected String getMainComponentName() { 
    return "FV"; 
} 

public static class TestActivityDelegate extends ReactActivityDelegate { 
    private static final String TEST = "test"; 
    private Bundle mInitialProps = null; 
    private final 
    @Nullable 
    Activity mActivity; 

    public TestActivityDelegate(Activity activity, String mainComponentName) { 
     super(activity, mainComponentName); 
     this.mActivity = activity; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     Bundle bundle = mActivity.getIntent().getExtras(); 
     if (bundle != null && bundle.containsKey(TEST)) { 
      mInitialProps = new Bundle(); 
      mInitialProps.putString(TEST, bundle.getString(TEST)); 
     } 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    protected Bundle getLaunchOptions() { 
     return mInitialProps; 
    } 
} 

@Override 
protected ReactActivityDelegate createReactActivityDelegate() { 
    return new TestActivityDelegate(this, getMainComponentName()); 
    } 
} 

在我的第一個集裝箱我得到this.props帕拉姆

export default class App extends Component { 

    render() { 
     console.log('App props', this.props); 

     //... 
    } 
} 

完整的例子我發現這裏: http://cmichel.io/how-to-set-initial-props-in-react-native/

1

您可以通過初始道具成捆的第三個參數的startReactApplication方法,像這樣:

Bundle initialProps = new Bundle(); 
initialProps.putString("alarm", true); 

mReactRootView.startReactApplication(mReactInstanceManager, "HelloWorld", initialProps); 

看到這個答案的詳細信息:https://stackoverflow.com/a/34226172/293280