我的目标是创建一个简单的程序,每隔X秒获取一次图像URL的内容,将其写入/ media / screensavers / Messages目录,然后解锁并重新锁定设备(Nook Simple Touch),以便新下载显示img。
警报会在应该播放并且图像下载时触发(我可以通过Android Studio logcat查看)。问题是角落没有解锁。 (屏幕不更新)。
这是来自AlarmReceiver.java的代码
@Override
public void onReceive(Context context, Intent intent) {
// Log to logcat
Log.i("AlarmReceiver", "onReceive() -- onReceive fired! ");
// Create the dummy image url
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
String imgPath = new String();
imgPath = "http://dummyimage.com/600x800/fff/000.jpg&text=" + currentDateTimeString ;
imgPath = imgPath.replaceAll(" ", "+");
// Download and save the image (works great)
new DownloadImageTask().execute(imgPath);
// Now how do I a) unlock the device, then b) put it back to sleep?
}
我从How to programmatically dismiss the screensaver/lock screen on Android (Nook Simple Touch)
尝试了这段代码Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
但是getWindow()
是RED(无法解析方法)。
我尝试过使用context.getWindow()
,但也有错误。如何从onReceiver上下文中访问getWindow?
目标:通过
刷新“屏幕保护程序”图像谢谢!
答案 0 :(得分:0)
我不得不切换到使用Activity作为意图,而不是接收者。
一旦我这样做,我将以下代码放入警报活动中:
KeyguardManager km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km.newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
wakeLock.acquire(1000);
上面的代码解锁了Nook! 请注意,带有标志的getWindow()方法似乎不适用于角落触摸。不知道为什么。