以编程方式查找是否允许从未知来源安装

时间:2011-06-13 16:55:01

标签: android settings

我需要查看当前的Android设备是否允许从市场以外的来源安装应用。此选项显示在名为“未知来源”的应用程序下的设置UI中。

该设置基本上允许您下载和安装并非源自Google应用市场的APK。

如何使用代码检查此标志是打开还是关闭?

4 个答案:

答案 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()