有 Java 编程相关的问题?

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

java为什么没有接收到操作用户?

ACTION_USER_PRESENT未在我的应用程序中注册,无论我尝试什么,它都从未注册过,ACTION_SCREEN_ON也是如此。下面是我编写的一些代码,用于计算解锁的数量,但它不起作用。我从另一个StackOverflow帖子中复制了它,该帖子解释了如何计算解锁次数

public class FragmentStats extends Fragment {

    private static final String TAG = "StatsFragment";
    private TextView textView;
    private SharedPreferences preferences;
    private SharedPreferences.Editor editor;
    private int count = 0;

    public class PhoneUnlockedReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {

            KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
            if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
                if (keyguardManager.inKeyguardRestrictedInputMode()) {
                    count++;
                    editor = preferences.edit();
                    editor.putInt("tag", count).commit();
                }
            } else {
                if (keyguardManager.isDeviceLocked()) {
                    count++;
                    editor = preferences.edit();
                    editor.putInt("tag", count).commit();
                }
            }
            Log.d(TAG, "unlock registered");

        }
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_stats, container, false);
        textView = view.findViewById(R.id.numberOfUnlocksTxt);

        getActivity().registerReceiver(new PhoneUnlockedReceiver(), new IntentFilter("安卓.intent.action.USER_PRESENT"));

        preferences = getActivity().getSharedPreferences("label", 0);

        count = preferences.getInt("tag", 0);

        textView.setText("Total Number of Unlocks " + count);

        return view;
    }
}

共 (0) 个答案