我需要查看当前的Android设备是否允许从市场以外的来源安装应用。此选项显示在名为“未知来源”的应用程序下的设置UI中。
该设置基本上允许您下载和安装并非源自Google应用市场的APK。
如何使用代码检查此标志是打开还是关闭?
答案 0 :(得分:22)
以下是使用上述设置的代码:
boolean isNonPlayAppAllowed = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS) == 1;
同时向用户显示设置可能对我有用:
if (!isNonPlayAppAllowed) {
startActivity(new Intent(android.provider.Settings.ACTION_SECURITY_SETTINGS));
}
答案 1 :(得分:11)
此设置称为“INSTALL_NON_MARKET_APP" (click for documentation)。
(当我发现答案隐藏在文档中时,我基本上已经输入了问题,并使用不同的名称,所以我决定发布问题和自我回答,因为这不是微不足道的。)
答案 2 :(得分:1)
boolean allow = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
allow = this.getPackageManager().canRequestPackageInstalls();
} else {
try {
allow = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS) == 1;
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
}
if (!allow)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startActivity(new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES));
} else {
startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS));
}
答案 3 :(得分:0)
您可以要求包裹经理告诉您
applicationContext.packageManager.canRequestPackageInstalls()