在 React Native 中以编程方式访问主页按钮

Programatic access to Home button in React Native

我正在尝试使用项目中的另一个按钮以编程方式调用“主页”按钮。应用程序编译正常,但是当我点击应该调用 Home 的按钮时,我收到以下错误:

Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference

这是我的代码(只是要点):

import android.app.Activity;
import android.content.Intent; 
import android.content.Context;

public class ClassName extends ReactContextBaseJavaModule {
  private Context context;

  @ReactMethod
  public void minApp() {
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startMain);
  }
}

我做错了什么?

解决方案:

由于我的应用程序使用 React Native,java 文件中桥接方法的代码应如下所示:

import android.content.Intent; 
import android.content.Context;

public class ClassName extends ReactContextBaseJavaModule {

  @ReactMethod
  public void minApp() {
    Context context = getReactApplicationContext();
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startMain);
  }
}

使用这个我们可以在任何我们想要的地方分配 Home button 函数 ;)

您似乎还没有初始化 context。确保在调用 minApp()

之前启动它
public void openLauncher(Context context) {
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startMain);
}

您可以使用此功能直接打开启动器。