2014-01-28 2 views
5

Любой, кто знает, как отключить кнопку приложения «Недавняя задача», когда запускает разрешенное приложение в приложении, как в SureLock Kiosk Lockdown? Если да, можете ли вы предоставить коды для этого?Android Отключить последнюю кнопку задач, например, в SureLock

+1

привет, вы найти решение для блокировки кнопки возврата? – Tazz

ответ

1

От source

public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

     Log.d("Focus debug", "Focus changed !"); 

    if(!hasFocus) { 
     Log.d("Focus debug", "Lost focus !"); 

     Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
     sendBroadcast(closeDialog); 
    } 
} 
+1

Как я могу получить к нему доступ, если я запускаю другое приложение? – androidBoomer

-1

Для отключения кнопки Недавние приложения при запуске других приложений, то вы можете создать службу.

общественного класса StatusBarService расширяет службы {

private static final String TAG = StatusBarService.class.getSimpleName(); 

private volatile boolean isRunning; 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 

    isRunning = true; 

    // Lock a recentApps button 
    RecentAppLockerThread thread = new RecentAppLockerThread(); 
    new Thread(thread).start(); 

} 

/** 
* Lock a recent apps button 
* 
* 
*/ 
private class RecentAppLockerThread implements Runnable { 

    @Override 
    public void run() { 
     while (isRunning) { 
      Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
      sendBroadcast(closeDialog);   
     } 
    } 

} 

@Override 
public boolean stopService(Intent name) { 
    isRunning = false; 
    return super.stopService(name); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    isRunning = false; 
} 

}

+1

Вы не можете быть серьезным. Бесконечная закрытая трансляция во время работы вашего сервиса? Кроме того, переопределение stopService не является обратным вызовом для остановки службы; он исходит из контекста, так что код запускается при вызове stopService из вашей службы. Этот ответ вреден. – PaulR

2

Для отключения Последние кнопка добавить этот код в ваш Основной вид деятельности:

@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(); 
    } 
} 
}; 
0
@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

    Log.d("Focus debug", "Focus changed !"); 

    if(!hasFocus) { 
     Log.d("Focus debug", "Lost focus !"); 

     Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
     sendBroadcast(closeDialog); 
    } 
}