2013-07-02 89 views
0

acquire()的權利失敗。 Eclipse沒有說錯誤是什麼。它只是停止執行我的模擬器,並給我那個「類文件編輯器」「源找不到」顯示。Android的WakeLocks無法正常工作

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

日誌說什麼? – mach

+0

哪個日誌?我爲我的應用程序過濾的「LogCat」沒有說什麼。我在發生故障之前清除它,然後導致故障,並且LogCat爲空。 –

+0

什麼是「類文件編輯器」「源未找到」?屏幕? 'allocStructs()'叫什麼名字?發佈更多的代碼。編輯:添加@user如果你想_user_被通知你的評論 –

回答

1

好的,我得到了我的答案,很尷尬。快速回答是我沒有獲得清單中Wake Locks的許可。

我讀過了你需要獲得wakelock權限的部分,但我認爲在調試模擬器中你可能不需要它。或者只需按下即可解決。然後,順便說一句,我認爲這是一個崩潰,而不是違反許可。所以我加了這個:

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

然後它工作。

相關問題