0

就在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
        }
    }
}
4

1 回答 1

1

好的,我得到了答案,我很尴尬。快速回答是我没有在清单中获得唤醒锁的许可。

我已经阅读了您需要获得唤醒锁权限的部分,但我认为在调试模拟器中您可能不需要它。或者只需按 即可解决。然后顺便说一句,它正在停止,我认为这是一次崩溃,而不是违反许可。所以我添加了这个:

    try {
         wakeLocks.acquire();
    } catch (Exception e) {
         e.printStackTrace();
         return;
    }

果然,这是违反许可的。此链接告诉我如何将权限添加到我的清单。

如何让 Android WakeLock 工作?

我不知道如何通过这些菜单添加权限,但我直接将此行添加到 xml 源。

 <uses-permission android:name="android.permission.WAKE_LOCK" />

然后它工作。

于 2013-07-03T16:14:56.543 回答