使用 react-native 和 Headless JS 关闭应用程序时显示 ToastAndroid

Bal*_*hut 5 android react-native

我一直在尝试将 BroadcastReceiver 与我的 react-native 应用程序集成。每当有人打电话给我时,我都想展示 ToastAndroid。当应用程序运行时(在前台和后台),它工作得很好,但是当我终止应用程序时,它不再触发 ToastAndroid。

我看过有人用本机代码执行此操作的视频(YT 链接),即使应用程序被终止,它也能正常工作。

我怎样才能用 react-native 来完成它?

我的服务代码:

public class CallService extends HeadlessJsTaskService {
@Override
protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
        return new HeadlessJsTaskConfig(
            "Call",
            Arguments.fromBundle(extras),
            5000,
            true
            );
    }
return null;
}
}
Run Code Online (Sandbox Code Playgroud)

我的接收器代码:

public final class CallReceiver extends BroadcastReceiver {

@Override
public final void onReceive(Context context, Intent intent) {
    Intent callIntent = new Intent(context, CallService.class);

    if (intent.getAction().equals("android.intent.action.PHONE_STATE")) {
        String phoneState = intent.getStringExtra("state");
        if (phoneState.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            String phoneNumber = intent.getStringExtra("incoming_number");
            callIntent.putExtra("number", phoneNumber);
        } 
    }

    context.startService(callIntent);
    HeadlessJsTaskService.acquireWakeLockNow(context);
}
}
Run Code Online (Sandbox Code Playgroud)

和JS代码:

const Call = async (data) => {
  console.log('It works!', data);
  ToastAndroid.show('TEST ' + data.number, ToastAndroid.SHORT);
};
AppRegistry.registerHeadlessTask('Call', () => Call);
Run Code Online (Sandbox Code Playgroud)