2014-01-30 3 views
2

Android 앱에서 사용자 휴대 전화의 사이드 로딩 사용 설정 여부를 감지 할 수있는 방법이 있습니까? 사용자가 이미 내 앱을 휴대 전화에 설치했습니다. 이제는 사용자가 사이드 로딩을 ​​사용하도록 설정했는지, 즉 사용자가 오프 마켓 소스에서 앱을 설치할 수 있도록 설정을 변경했는지 여부를 프로그래밍 방식으로 테스트하고 싶습니다. 이 정보를 얻기위한 API가 있다면? 프로그래밍 방식으로 쿼리 할 수있는 어딘가에 저장되어있는 설정이 있습니까 (사용자 상호 작용을 요구하지 않고)? INSTALL_NON_MARKET_APPS 상태에 대한사이드 로딩을 ​​사용할지 여부를 감지하는 Android API

답변

2
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 
@SuppressWarnings("deprecation") 
public static boolean isSideloadingEnabled(Context ctx) { 
    final ContentResolver cr = ctx.getContentResolver(); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     //Pull from Secure settings for (API < 17) 
     return Settings.Secure.getInt(cr, Settings.Secure.INSTALL_NON_MARKET_APPS, 0) == 1; 
    } else { 
     //Setting was moved to Global settings in (API >= 17) 
     return Settings.Global.getInt(cr, Settings.Global.INSTALL_NON_MARKET_APPS, 0) == 1; 
    } 
} 

자바 독 : 패키지 설치가 Google Play 이외의 소스에서 다운로드 한 애플리케이션의 설치를 허용해야

여부. 1 = 다른 소스에서 설치 허용 0 = Google Play 설치 만 허용

0

분명히이 설정은 INSTALL_NON_MARKET_APP 설정에 의해 제공됩니다. 최신 버전의 Android에서이를 쿼리하는 방법은 링크를 참조하십시오.

이전 버전의 Android에서도 사용할 수있는 이전 버전과 호환되는 방법을 보려면 https://stackoverflow.com/a/17777053/781723을 참조하십시오.

관련 문제