java - StartActivity 一旦用户在权限屏幕上单击允许

标签 java android android-permissions

我的一项 Activity 需要位置许可,我写了下面的代码来获得许可。但在这种情况下,如果应用最初没有位置权限,用户需要点击两次才能打开 Activity 。我能否进行一些更改,以便一旦用户在“权限”屏幕上单击“允许”,然后才会触发 intent。

 int PERMISSION_ALL = 1;
                            String[] PERMISSIONS = new String[0];
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                                PERMISSIONS = new String[]{
                                        Manifest.permission.ACCESS_FINE_LOCATION};
                            }

                            if (!hasPermissions(getApplicationContext(), PERMISSIONS)) {
                                ActivityCompat.requestPermissions(StartupActivity.this, PERMISSIONS, PERMISSION_ALL);
                            }

                            if (hasPermissions(getApplicationContext(), PERMISSIONS)) {
                                new Thread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Intent intent = new Intent(StartActivity.this, Details.class);
                                        startActivity(intent);
                                    }
                                }).start();
                            }

最佳答案

override onRequestPermissionsResult 如果权限被授予,则从那里开始你的Activity

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if(requestCode == PERMISSION_ALL){
        if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED ){

             new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Intent intent = new Intent(StartActivity.this, Details.class);
                        startActivity(intent);
                    }
                }).start();
        }else{
            Toast.makeText(MainActivity.this, "Access Denied ! Cannot proceed further ", Toast.LENGTH_SHORT).show();
        }
    }
}

注意:显然,代码似乎在 StartupActivity 中(来自 StartupActivity.this),因此您不需要创建线程,只需启动您的 详细信息 Activity 带有简单的Intent


代码将是

class StartupActivity extends ..{

    onCreate...(){}

    // here you will have onRequestPermissionsResult 
    @Override
    public void onRequestPermissionsResult( ....){...}

}

关于java - StartActivity 一旦用户在权限屏幕上单击允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072770/

相关文章:

java - isValid 抛出异常 - hibernate validator

android - 如何删除 ListView android xamarin 中的选定项目

android - 如何在运行时在 Android Marshmallow 中获取 CLEAR_APP_CACHE 权限?

java - Android控制ADmob点击后隐藏addview窗口

java - 网络逻辑 11g : Managed Server is not starting from Weblogic console

java - 在java中填充未初始化的数组? (或解决方法!)

android - 尝试删除每个 Play 管理中心的 Android SMS 和 CALL_LOG 权限,但找不到它们

android - 如何授予权限 Manifest.permission.MANAGE_DOCUMENTS android 6.0

Java进程内存检查测试

Android SQLite 大量行