Android WakeLocks无法正常工作

时间:2013-07-02 19:01:42

标签: android-wake-lock

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
        }
    }
}

1 个答案:

答案 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" />

然后它有效。