Android如何在app中通过一个按钮直接跳转到的系统的权限设置页面

续上一篇《Android的权限设置及自启动设置》,在开发中我通过一个按钮来进行跳转到系统的权限页面,一开始的代码就是上一篇中的原模原样的代码,如下所示:

    /**
     * 跳转到权限设置界面
     */
    private void getAppDetailSettingIntent(Context context){
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        if(Build.VERSION.SDK_INT >= 9){
            intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
            intent.setData(Uri.fromParts("package", getPackageName(), null));
        } else if(Build.VERSION.SDK_INT <= 8){
            intent.setAction(Intent.ACTION_VIEW);
            intent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
            intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
        }
        startActivity(intent);
    }

然而,把公司里的安卓都借来测了一遍后只想感叹:理想很丰满,现实很骨感!

首先呢,公司里的手机只有小米(好多只)、vivo(两只)、三星(一只)、oppo(一只)。

测试结果:
小米,没有问题,跳转到页面后直接选择权限管理就可以设置了;
vivo,跳转到的权限页面只给看,不能设置;
三星,这一只没问题;
oppo,和vivo一样,跳转到的权限页面只给看,不能设置。

这实在是好坑,oppo和vivo都有单独的一款系统软件管家,只有在那个app里才能进行权限设置,所以这种情况下,不应该跳转到系统的设置页面,而是打开软件管家。那么想要去打开一个app就必须要知道这个app的包名。所有,只能通过adb来获取它们各自管家的包名。例如,打开vivo的 i管家,在Terminal中通过执行这个指令 adb shell dumpsys activity top来捕捉软件的主Activity。

adb结果:
vivo的软件管家包名:com.iqoo.secure
oppo的软件管家包名:com.oppo.safe

所以,我那段代码也需要加点判断,代码如下:

    /**
     * 跳转到权限设置界面
     */
    private void getAppDetailSettingIntent(Context context){

        // vivo 点击设置图标>加速白名单>我的app
        //      点击软件管理>软件管理权限>软件>我的app>信任该软件
        Intent appIntent = context.getPackageManager().getLaunchIntentForPackage("com.iqoo.secure");
        if(appIntent != null){
            context.startActivity(appIntent);
            floatingView = new SettingFloatingView(this, "SETTING", getApplication(), 0);
            floatingView.createFloatingView();
            return;
        }

        // oppo 点击设置图标>应用权限管理>按应用程序管理>我的app>我信任该应用
        //      点击权限隐私>自启动管理>我的app
        appIntent = context.getPackageManager().getLaunchIntentForPackage("com.oppo.safe");
        if(appIntent != null){
            context.startActivity(appIntent);
            floatingView = new SettingFloatingView(this, "SETTING", getApplication(), 1);
            floatingView.createFloatingView();
            return;
        }

        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        if(Build.VERSION.SDK_INT >= 9){
            intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
            intent.setData(Uri.fromParts("package", getPackageName(), null));
        } else if(Build.VERSION.SDK_INT <= 8){
            intent.setAction(Intent.ACTION_VIEW);
            intent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
            intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
        }
        startActivity(intent);
    }

还有酷派、魅族、HTC等等公司里没有机型,还不知道结果是怎么样的,如果有现成手机的,可以测一下分享一下,谢谢 •_^

原文地址;http://blog.csdn.net/perarther/article/details/54025042

好的,以下是详细的步骤: 1. 在Android Studio创建一个新的工程,并在工程的`app/src/main/assets`目录下创建一个名为`index.html`的文件。在`index.html`文件编写HTML、CSS和JavaScript代码,例如: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>My Web Page</title> <style> body { background-color: #f2f2f2; } h1 { color: red; } </style> <script> function showMessage() { alert("Hello, world!"); } </script> </head> <body> <h1>Welcome to my web page</h1> <button onclick="showMessage()">Click me</button> </body> </html> ``` 2. 在`app/build.gradle`文件添加以下依赖: ``` implementation 'androidx.webkit:webkit:1.4.0' ``` 这是为了使用Android的WebView组件。 3. 在你的布局文件添加一个WebView组件: ```xml <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 4. 在你的Activity获取这个WebView组件,并设置它加载你的HTML文件: ```java import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("file:///android_asset/index.html"); } } ``` 在这里,`file:///android_asset/index.html`表示你的HTML文件在Android应用的assets目录下。`setWebViewClient(new WebViewClient())`是为了让WebView在应用内部打开链接,而不是调用系统浏览器打开。 5. 在你的按钮点击事件,使用Intent来启动你的Activity: ```java Intent intent = new Intent(this, MainActivity.class); startActivity(intent); ``` 这样,当用户点击按钮时,就会跳转到你的MainActivity,显示你的HTML、CSS、JavaScript文件的内容。 6. 最后,在AndroidManifest.xml文件添加以下权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 这是为了让WebView能够加载网络资源(例如图片、字体等)。 这样就完成了设置,运行应用,点击按钮即可跳转到你的HTML页面
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值