繁体   English   中英

Android:请求存储权限后出现启动画面问题

[英]Android: Splash Screen Issue after request storage permission

我在我的项目中使用Cordova启动画面插件当我使用以下代码获取请求存储权限时,启动画面不起作用:

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    {
        requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        requestPermissions(new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
    }

当我删除此代码时,启动画面将再次起作用!

这是我的MainActivity:

public class MainActivity extends CordovaActivity
{

boolean doubleBackToExitPressedOnce = false;
int res = 404; 
int code;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    Bundle extras = getIntent().getExtras();
    if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
        moveTaskToBack(true);
    }
....
....
....
    UiChangeListener();
    requestPermission();
}

public void UiChangeListener()
{
    final View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() {
        @Override
        public void onSystemUiVisibilityChange(int visibility) {
            if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                decorView.setSystemUiVisibility(
                        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_FULLSCREEN
                                | View.SYSTEM_UI_FLAG_IMMERSIVE);
            }
        }
    });

}
private void requestPermission() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
    } }

}

}

怎么了?

代替这个:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
    requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    requestPermissions(new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}

写这个:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
    requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}

您不必为2个不同的权限请求2次权限。 您可以将多个权限组合到单个请求中。

希望能帮助到你。

您可以在AndroidManifest File中添加上述权限,并为创建启动屏幕而已,只需编写如下所示的类并使用intent

public class entercsreen extends Activity {

private final int SPLASH_DISPLAY_LENGTH = 1500;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_entercsreen);

    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent mainIntent = new Intent(entercsreen.this,MainActivity.class);
            entercsreen.this.startActivity(mainIntent);
            entercsreen.this.finish();
        }
    }, SPLASH_DISPLAY_LENGTH);





}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM