Android 未对ReactContextBaseJavaModule(react native)调用onNewIntent()
我正在构建一个react本机模块,从我的模块发送一个这样的悬挂式帐篷Android 未对ReactContextBaseJavaModule(react native)调用onNewIntent(),android,react-native,Android,React Native,我正在构建一个react本机模块,从我的模块发送一个这样的悬挂式帐篷 Intent postAuthorizationIntent = new Intent("com.example.HANDLE_AUTHORIZATION_RESPONSE"); PendingIntent pendingIntent = PendingIntent.getActivity(reactContext.getApplicationContext(), request.hashCode(), postAuthori
Intent postAuthorizationIntent = new Intent("com.example.HANDLE_AUTHORIZATION_RESPONSE");
PendingIntent pendingIntent = PendingIntent.getActivity(reactContext.getApplicationContext(), request.hashCode(), postAuthorizationIntent, 0);
如果修改MainActivity,则可以在onNewIntent()方法中接收数据。这个班看起来像这样
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript.
* This is used to schedule rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "example";
}
@Override
public void onNewIntent(Intent intent) {
checkIntent(intent);
}
@Override
protected void onStart() {
super.onStart();
checkIntent(getIntent());
}
private void checkIntent(@Nullable Intent intent) {
if (intent != null) {
String action = intent.getAction();
switch (action) {
case "com.example.HANDLE_AUTHORIZATION_RESPONSE":
...
break;
default:
// do nothing
}
}
}
}
然后,当我尝试将此逻辑移动到我的模块时,什么都没有发生,它不工作
public class ExampleModule extends ReactContextBaseJavaModule implements ActivityEventListener{
private ReactApplicationContext reactContext;
private String action = "";
public ExampleModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
this.action = "com.example.HANDLE_AUTHORIZATION_RESPONSE";
reactContext.addActivityEventListener(this);
}
@Override
public String getName() {
return "ExampleModule";
}
@Override
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
}
@Override
public void onNewIntent(Intent intent) {
checkIntent(intent);
}
private void checkIntent(@Nullable Intent intent) {
if (intent != null) {
String action = intent.getAction();
switch (action) {
case "com.example.HANDLE_AUTHORIZATION_RESPONSE":
...
break;
default:
// do nothing
}
}
}
}
好的,我解决了这个问题
public class RNSsfAuthModule extends ReactContextBaseJavaModule implements ActivityEventListener, Application.ActivityLifecycleCallbacks{
....
public ExampleModule(ReactApplicationContext reactContext, Application application) {
super(reactContext);
...
reactContext.addActivityEventListener(this);
application.registerActivityLifecycleCallbacks(this);
}
...
@Override
public void onActivityStarted(Activity activity) {
checkIntent(activity.getIntent());
}
}
好的,我解决了这个问题
public class RNSsfAuthModule extends ReactContextBaseJavaModule implements ActivityEventListener, Application.ActivityLifecycleCallbacks{
....
public ExampleModule(ReactApplicationContext reactContext, Application application) {
super(reactContext);
...
reactContext.addActivityEventListener(this);
application.registerActivityLifecycleCallbacks(this);
}
...
@Override
public void onActivityStarted(Activity activity) {
checkIntent(activity.getIntent());
}
}
我遇到了同样的问题,通过从
MainActivity
调用super.onNewIntent(intent)
解决了这个问题:
@Override
public void onNewIntent(Intent intent) {
setIntent(intent);
super.onNewIntent(intent);
}
有了这个选项,您的模块中会调用onNewIntent
——假设您的模块实现了ActivityEventListener
,并且您已将其注册为构造函数中的侦听器:
reactContext.addActivityEventListener(this);
我遇到了同样的问题,通过从
MainActivity
调用super.onNewIntent(intent)
解决了这个问题:
@Override
public void onNewIntent(Intent intent) {
setIntent(intent);
super.onNewIntent(intent);
}
有了这个选项,您的模块中会调用onNewIntent
——假设您的模块实现了ActivityEventListener
,并且您已将其注册为构造函数中的侦听器:
reactContext.addActivityEventListener(this);
“它不起作用”是什么意思?请提供任何错误消息。对不起,我的意思是。。。什么也没有发生,onNewIntent方法从未被调用,我在控制台上没有看到任何错误,应用程序继续执行。正如我所说的,同样的代码工作得很好,但是在MainActivity内部。你说“它不工作”是什么意思?请提供任何错误消息。对不起,我的意思是。。。什么也没有发生,onNewIntent方法从未被调用,我在控制台上没有看到任何错误,应用程序继续执行。正如我所说,相同的代码运行良好,但在MainActivity.Confirmed和work内部。似乎我们不能调用
super.onNewIntent(intent)代码>虽然没有重载方法,但已确认并有效。似乎我们不能调用super.onNewIntent(intent)代码>虽然没有重载方法。