我的Android应用是否有办法检测是否在用户的手机上启用了侧面加载?用户已在手机上安装了我的应用。现在,我想以编程方式测试用户是否启用了侧载,即用户是否已更改其设置以允许从场外源安装应用。如果有API来获取此信息?是否存储了一个我可以通过编程方式查询的设置(无需用户交互)?
答案 0 :(得分: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;
}
}
INSTALL_NON_MARKET_APPS
州的Javadoc:
软件包安装程序是否应允许安装从Google Play以外的来源下载的应用程序。 1 =允许从其他来源安装0 =仅允许从Google Play安装
答案 1 :(得分:0)
显然,这是由INSTALL_NON_MARKET_APP设置提供的。请参阅有关如何在最新版本的Android上进行查询的链接。
对于向后兼容的查询方式,该方法也适用于旧版Android,请参阅https://stackoverflow.com/a/17777053/781723。