2013-12-21 63 views
1

是否可以隱藏/禁用屏幕鎖定應用程序的設備主鍵。我累了創建示例鎖屏應用,我做了以下的測試過程中,如何禁用Android啓動器應用程序的HOME鍵

  1. 設備屏幕關閉
  2. 點擊了搜索按鈕 - 鎖屏就會出現,什麼都不會發生
  3. 點擊了後退按鈕 - 鎖定屏幕上會出現什麼都不會發生
  4. 單擊的菜單鍵 - 鎖屏就會出現,什麼都不會發生
  5. 點擊了首頁按鈕 - 鎖屏會移除並重定向到設備的主頁。

在我的manifest.xml是,

<activity 
      android:name=".SampleLock" 
      android:excludeFromRecents="true" 
      android:label="@string/app_name" 
      android:launchMode="singleInstance" 
      android:persistent="true" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.HOME" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <!-- <category android:name="android.intent.category.MONKEY" /> --> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

傢伙任何想法來解決這個問題?

+0

你能做到這一點 – Hardik

+0

@Hardik:那麼GoLocker和其他應用程序更衣室如何做? – Aerrow

+0

遺憾的快速評論看我的答案 – Hardik

回答

0

從您的清單減速

<category android:name="android.intent.category.LAUNCHER" /> 

刪除此行一定是

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.HOME" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
1

禁用home鍵只是在你的Manifest.xml添加此權限:

<使用許可權android:name =「android.permission.GET_TASKS」/>

禁用最近的按鈕將此代碼添加到您的主要活動:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (!hasFocus) { 
     windowCloseHandler.post(windowCloserRunnable); 
    } 
} 
private void toggleRecents() { 
    Intent closeRecents = new Intent("com.android.systemui.recent.action.TOGGLE_RECENTS"); 
    closeRecents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
    ComponentName recents = new ComponentName("com.android.systemui", "com.android.systemui.recent.RecentsActivity"); 
    closeRecents.setComponent(recents); 
    this.startActivity(closeRecents); 
} 
private Handler windowCloseHandler = new Handler(); 
private Runnable windowCloserRunnable = new Runnable() {@Override public void run() { 
    ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); 
    ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 
    if (cn != null && cn.getClassName().equals("com.android.systemui.recent.RecentsActivity")) { 
     toggleRecents(); 
    } 
} 
}; 
相關問題