Запускать код каждый раз, когда экран включен (не разблокирован) - даже когда приложение убито - PullRequest
0 голосов
/ 08 апреля 2019

Я задавал этот вопрос раньше, но сообщалось, как ДУБЛИКАТ. Однако предложенный пост не ответил на мой вопрос. Итак, я пытаюсь снова и проясняю себя.

Я пытаюсь разработать приложение, которое может менять обои каждый раз, когда пользователь нажимает кнопку питания / домой, когда устройство заблокировано (что-то вроде библиотеки обоев экрана блокировки Samsung). Таким образом, каждый раз, когда экран переходит от черного к свету, обои меняются.

Я читал, что этого можно достичь с помощью action_screen_on. Тем не менее, говорят, что это намерение может быть использовано, только если приложение работает. Я бы хотел, чтобы обои менялись, даже когда приложение убито.

Это фрагмент моего кода:

public class screenOnReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            WallpaperManager myWallpaperManager = WallpaperManager.getInstance(context);

            int height = 500;
            int width = 500;
            Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            Paint paintGradient = new Paint(Paint.ANTI_ALIAS_FLAG);
            Shader shader = new LinearGradient(0, 0, width, height,
                    new int[]{0xffffff, 0x454545}, null, Shader.TileMode.CLAMP);

            paintGradient.setShader(shader);
            canvas.drawRect(0, 0, width, height, paintGradient);
            try {
                myWallpaperManager.setBitmap(bitmap);
            } catch (IOException e) {
                Log.v("Error", "Problem setting wallpaper");
            }
        }
    }
}

Я ничего не вижу. Это как если бы этот BroadcastReceiver не был запущен вообще. Заранее спасибо, ребята.

...