将数据从broadcastreceiver发送到后台活动(不启动)

wfveoks0  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(226)

我有一个receiver类,它注册在我的mainactivity中,应该算解锁。
我的目标
我想让它工作,即使应用程序本身没有运行(接收器从来没有注销)。它应该在不启动/重新启动活动的情况下获取主活动的解锁量。
我的问题
我不知道怎么做。如你所见,我试着用 SharedPreferences ,但它没有工作,接收器工作良好,并得到广播,我只是不想它每次启动。

public class UnlockReceiver extends BroadcastReceiver {

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

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

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

        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();
                Log.d(TAG, "unlock registered");
                Intent i = new Intent(context, MainActivity.class);
                i.putExtra("tag", count);
                context.sendBroadcast(i);
            }
        } else {
            if (!keyguardManager.isDeviceLocked()) {
                count++;
                editor = preferences.edit();
                editor.putInt("tag", count).commit();
                Log.d(TAG, "unlock registered");
                Intent i = new Intent(context, MainActivity.class);
                i.putExtra("tag", count);
                context.sendBroadcast(i);
            }
        }
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题