React-Native Android - 从意图中获取变量

时间:2016-09-06 14:34:04

标签: android android-intent react-native

我正在使用意图启动我的React-Native应用程序,我正在尝试找出如何在反应本机代码中获取我的意图变量。这可能来自react-native还是我必须编写一些java代码来获取它?

我用来启动应用的代码:

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

谢谢!

3 个答案:

答案 0 :(得分:5)

尝试使用本机应用程序获取Intent params。

在我的原生应用中,我使用此代码:

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

在react-native项目中,我的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 :(得分:1)

您可以将初始道具作为包传递给startReactApplication方法中的第三个参数,如下所示:

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

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

有关详细信息,请参阅此答案:https://stackoverflow.com/a/34226172/293280

答案 2 :(得分:0)

根据@Eduardo Junior的回答,我认为这种更正确的方法

$('#myValue+myVariable+1').val("Hello World!");  //Doesn't work