有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓如何在React Native中没有reactContext的情况下从无头JS任务执行Java代码?

当我的应用程序被终止时,我需要调用以下Java本机模块,这意味着没有react应用程序上下文

是否可以在没有React本机活动的情况下添加此功能

我如何重新编写此代码,以便在收到Firebase Cloud消息后应用程序被终止时调用它

Java代码解锁设备/键盘:

package com.fleeting;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReactContext;
import 安卓.app.Activity;
import 安卓.os.Build;
import 安卓.view.WindowManager;
import 安卓.os.PowerManager;
import 安卓.os.PowerManager.WakeLock;
import 安卓.content.Context;

public class DeviceLock extends ReactContextBaseJavaModule {

    @Override
    public String getName() {
        return "DeviceLock";
    }

        private ReactContext mReactContext;
        private PowerManager.WakeLock sCpuWakeLock;
        private Activity activity;

    public DeviceLock(ReactApplicationContext reactContext) {
        super(reactContext);
                mReactContext = reactContext;
    }

    /* React Methods */
   @ReactMethod
    public void unlock() {
                    activity = mReactContext.getCurrentActivity();

                    PowerManager pm = (PowerManager) mReactContext.getSystemService(Context.POWER_SERVICE);
                    int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK 
                            | PowerManager.ACQUIRE_CAUSES_WAKEUP 
                            | PowerManager.ON_AFTER_RELEASE;
                    sCpuWakeLock = pm.newWakeLock(flags, activity.getClass().getName());
                    sCpuWakeLock.acquire();
    
                    activity.runOnUiThread(() -> {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
                            activity.setShowWhenLocked(true);
                            activity.setTurnScreenOn(true);
                }

                    activity.getWindow().addFlags(
                           WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                            | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
                            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
                            
                        });
                    }
                    
                    @ReactMethod
                    public void lock() {
                        sCpuWakeLock.release();
    
                        activity.runOnUiThread(() -> {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
                                activity.setShowWhenLocked(false);
                                activity.setTurnScreenOn(false);
                    }
    
                        activity.getWindow().clearFlags(
                                 WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
                                | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
                            });
                }
}

共 (0) 个答案