2013-08-18 1 views
0

맞춤형 잠금 화면을 개발했지만 내 앱에 보안 비밀번호가있는 경우 알림/상태 표시 줄을 스크롤하지 않도록 설정하려고합니다. 사용자 정의 잠금 화면에서 상태/알림 표시 줄 스크롤하지 않음

은 내가

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
} 

를 추가하면 나는 상태 표시 줄을 스크롤 할 수 있다는 것을 발견,하지만 난 보안 시스템 잠금을 설정해야합니다. 그래서 내 질문은, 내가 동일한 것들을 구현할 수 있지만 시스템 보안 잠금을 활성화하지 않고도?

+0

옵션을 사용하도록 설정하려면 사용자가 화면 잠금 핀/비밀번호를 설정하여 사용하도록 설정해야합니다. – ozbek

답변

2
  1. 화면 잠금 중 하나 또는 다른 유형 (얼굴 잠금 해제, 패턴, 핀, 비밀번호)을 사용 설정하지 않으면 달성 할 수 없습니다.

  2. 리플렉션을 통해 루팅 된 기기에서 가능합니다 (화면 잠금 사용 여부에 관계 없음). 귀하의 응용 프로그램은 보호 수준이 "서명 | 시스템"입니다 "android.permission.STATUS_BAR" 권한이 있어야합니다. 앱이 플랫폼 키로 서명되어야하거나 시스템 애플리케이션이어야합니다.

의 AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.disablestatusbar" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" /> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.disablestatusbar.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

MainActivity.java :이 도움이

package com.example.disablestatusbar; 

import java.lang.reflect.InvocationTargetException; 
import java.lang.reflect.Method; 

import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity { 

    private Object mStatusBarManager; 
    private static final String STATUS_BAR_SERVICE = "statusbar"; 
    private static final int DISABLE_NONE = 0x00000000; 
    private static final int STATUS_BAR_DISABLE_EXPAND = 0x00010000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mStatusBarManager = getSystemService(STATUS_BAR_SERVICE); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     disableStatusbarExpand(STATUS_BAR_DISABLE_EXPAND); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     disableStatusbarExpand(DISABLE_NONE); 
    } 

    private void disableStatusbarExpand(int what) { 
     try { 
      Method disable = mStatusBarManager.getClass().getMethod("disable", int.class); 
      try { 
       disable.invoke(mStatusBarManager, what); 
      } catch (IllegalArgumentException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (InvocationTargetException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } catch (NoSuchMethodException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

희망.