如何在Android中动态检查打开/关闭“安装未知应用程序切换”功能

问题描述

我添加了以下代码,用于使用Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES重定向到“安装未知应用程序屏幕”运行时。

但是如何检查切换按钮是打开还是关闭?

如果启用了“安装未知资源”,我需要下载APK文件,否则需要将其重定向到图片中所示的“权限”页面。

Click this image to check for more..

    package com.example.demoapp;
    
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Settings;
    import android.view.View;
    import android.widget.Button;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        Button mButtonDownload;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mButtonDownload = findViewById(R.id.btn_click);
    
            mButtonDownload.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    boolean appInstalled = isAppInstalled("com.example.demoapp");
                    if (appInstalled) {
                        System.out.println("App already installed.");
    
                        Intent intent = null;
                        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                            intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
                            intent.setData(Uri.parse("package:" + getPackageName()));
                            startActivity(intent);
                        }
                    }
                }
            });
        }
    
        private boolean isAppInstalled(String packageName) {
            PackageManager pm = getPackageManager();
            boolean installed = false;
            try {
                pm.getPackageInfo(packageName,PackageManager.GET_ACTIVITIES);
                installed = true;
            } catch (PackageManager.NameNotFoundException e) {
                installed = false;
            }
            return installed;
        }
    }

请提前建议我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)