从java模块启动react-native活动(android)

时间:2016-09-04 00:56:31

标签: java android react-native

我看到你可以使用以下行把你的活动从背景中带到android的前台

Intent intent = new Intent(this, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

现在问题是我不知道如何让反应活动的名称起作用 - 当我尝试编译时我得到

  

错误:找不到符号Intent i = new Intent(mReactContext,   MainActivity.class);

     

symbol:class MainActivity

我对java不是很有经验 - 所以这是我的问题的一部分,我尝试使用getCurrentActivity() - 但这似乎也不起作用。

有人有想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你有权访问reactContext(我看到你有),你可以试试这个:

from django.db import models

class Base(models.Model):
    name = models.CharField(max_length=10)
    class Meta:
        abstract = True

class A(Base):
    pass

class B(Base):
    title = models.CharField(max_length=10)

Context context = getReactApplicationContext(); String pn = context.getApplicationContext().getPackageName(); Intent li = context.getPackageManager().getLaunchIntentForPackage(pn); context.startActivity(li); 只是一个包名称(例如String pn),因此您可以跳过"com.yourapp"并将您的包名称传递给getPackageName()。您可以在react-native-system-notification

上查看此解决方案

答案 1 :(得分:0)

您应该参考您的第一项活动。然后创建您的意图并开始活动。在代码中的某处运行代码(例如,在触发活动的react方法中)

  • 活动currentActivity = getCurrentActivity();
  • Intent intent = new Intent(活动名称);
  • currentActivity.startActivityForResult(意图,FLAG_ACTIVITY_NEW_TASK );

//创建onActivityResult方法,根据结果处理您的任务

      public void onActivityResult(int requestCode, int resultCode, Intent data) {

      if (requestCode == FLAG_ACTIVITY_NEW_TASK ) {

             // do your job
            }
        }

您似乎使用MainActivity.class作为intent中的参数。我不是专家,但似乎错了。在react-native项目中,将自动触发mainactivity并调用index.android.js。您可以使用您创建的活动,也不必使用Intent.ACTION_GET_CONTENT等原生Android活动,可用于从图库中获取图像信息。