在acquire()
右侧失败。 Eclipse没有说明错误是什么。它只是停止我的模拟器上的执行,并给我“类文件编辑器”“源未找到”显示。
public class MyAppActivity extends Activity {
private PowerManager pManager;
private PowerManager.WakeLock wakeLock;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.main);
allocStructs();
}
private void allocStructs() {
// I've tried this with "getBaseContext()" and with "this"
// same results. I get a pManager and a wakeLock
// Then it crashes when I attempt to acquire
pManager = (PowerManager)getBaseContext().getSystemService(
Context.POWER_SERVICE);
wakeLock = pManager.newWakeLock(
PowerManager.FULL_WAKE_LOCK, "full");
}
public void onWakeLockButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
if (!checked) {
return;
}
if (!wakeLock.isHeld()) {
wakeLock.acquire(); // fails here
}
}
}
答案 0 :(得分:1)
好的,我得到了答案并且很尴尬。快速回答是我没有获得清单中唤醒锁的许可。
我已经阅读了获取唤醒锁权限所需的部分,但我认为在调试模拟器中您可能不需要它。或者只是按下就可以解决问题。然后顺便说一下,我认为这是一次崩溃,而不是违反许可。所以我补充说:
try {
wakeLocks.acquire();
} catch (Exception e) {
e.printStackTrace();
return;
}
确定这是违反许可的行为。这个链接告诉我如何将权限添加到我的清单。
How to get an Android WakeLock to work?
我无法弄清楚如何通过这些菜单添加权限,但我直接将此行添加到xml源。
<uses-permission android:name="android.permission.WAKE_LOCK" />
然后它有效。