2012-10-01 44 views
0

我知道在Android 4.0上隱藏系統欄的討論很多,但沒有討論禁用Android 4.0平板電腦上的虛擬按鈕或狀態欄或系統欄的功能嗎?禁用系統欄Android 4.0

這可能嗎?有人能指引我走向正確的方向嗎?

謝謝!

回答

0

我已經做了很多的研究,設計一個鎖屏和終於找到了永久禁用系統欄的解決方案,即導航欄(後退,主頁,最近的應用程序軟鍵)和狀態欄。 Android禁用了該功能以覆蓋除後退按鈕之外的系統欄。但有一點工作,使這項工作:

理解和實施屏幕固定耐心,你會成功。

你可以創建一個應用程序來控制你想要實現的所有應用程序屏幕固定或者你可以直接在你想要固定的應用程序中實現屏幕固定。

我要告訴你在這篇文章中後實施:

1.首先您的應用程序應該是設備所有者。

你能做到在幾個方面和最簡單的就是要執行的命令:

亞行外殼DPM設置設備所有者[yourPackageName]/[MyDeviceAdminReceiver]

創建一個接收器(MyDeviceAdminReceiver )擴展了DeviceAdminReceiver。你在這裏不需要任何代碼。有關設備所有者實施更多信息請參考以下鏈接
http://florent-dupont.blogspot.com/2015/02/10-things-to-know-about-device-owner.html

註冊在AndroidManifest.xml接收文件是這樣的:

<receiver 
     android:name=".MyDeviceAdminReceiver" 
     android:label="@string/app_name" 
     android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    <meta-data 
     android:name="android.app.device_admin" 
     android:resource="@xml/device_admin" /> 

     <intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
     </intent-filter> 
    </receiver> 

2.您的onCreate方法應該是這樣:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lock_screen); 

    ComponentName deviceAdmin = new ComponentName(this, MyDeviceAdminReceiver.class); 
    DevicePolicyManager mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 


    if (mDpm.isDeviceOwnerApp(getPackageName())) { 
     mDpm.setLockTaskPackages(deviceAdmin, new String[]{getPackageName()}); 
    } 

    if (mDpm.isLockTaskPermitted(this.getPackageName())) 
     startLockTask(); 

3.要取消固定屏幕並使導航欄功能

調用函數stopLockTask()在代碼中您想要解除鎖定的位置。例如,在我的應用程序,只要我驗證用戶已經輸入了正確的密碼,我調用這個函數:

if (userInput.length() == 4) { 

        if (userInput.equals(passcode)) { 
         userInput = ""; 
         etxtPasscodeDisplay.setText(""); 
         stopLockTask(); // this is what you need 
         unlockHomeButton(); // A method to show home screen when 
         passcode is correct 
         finishAffinity(); //kill other activities 
        } 

額外的資訊通常需要lockscreens:

1。如果您的應用程序是在引導後出現的第一件事:

你需要一個服務(StartAtBootService)和該接收器(BootCompletedReceiver)。

2.如果您想您的應用程序的屏幕鎖定後顯示出來,並解鎖 (在按下電源按鈕鎖定和解鎖):

創建擴展AEScreenOnOffService延伸服務和AEScreenOnOffReceiver BroadcastReceiver在屏幕開啓時啓動您的活動。

有關我在這裏提到的所有內容的詳細信息,請參考http://www.sureshjoshi.com/mobile/android-kiosk-mode-without-root/
這是一篇很好的寫作,對我有很大的幫助。特別感謝作者。

我需要至少10個聲望才能發佈兩個以上的鏈接。由於我是新手,我沒有足夠的聲譽,所以我很抱歉無法分享我提到的所有鏈接。一旦獲得訪問權,肯定會更新帖子。