繁体   English   中英

应用程序仅在 Android 13 中卡在启动画面上

[英]App stuck on splash screen in android 13 only

我的应用程序卡在 Android 13 的 spalsh 屏幕上,没有任何崩溃,甚至在较低的 android 版本上也没有请求权限,它运行得非常完美

public class SplashScreen extends AppCompatActivity {

String[] permissionsList;

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

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        permissionsList = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS};
    } else {
        permissionsList = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE};
    }

    ((RubberLoaderView) findViewById(R.id.loader1)).startLoading();
    if (Utils.hasPermissions(this, permissionsList)) {
        ActivityCompat.requestPermissions(this, Utils.permissions, Utils.perRequest);
    } else {
        gotoNext();
    }

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == Utils.perRequest) {
        if (Utils.hasPermissions(this, permissionsList)) {
            ActivityCompat.requestPermissions(this, Utils.permissions, Utils.perRequest);
        } else {
            gotoNext();
        }
    }
}

void gotoNext() {
    new Handler().postDelayed(() -> {
        startActivity(new Intent(SplashScreen.this, Home.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
        finish();
    }, 600);
}

这是我的代码,我无法理解这个问题

通过了解您的一些代码,如果用户允许特定的运行时权限,您将导航到下一个屏幕。 问题在于,您的代码不遵守最新版本的 Android 中的一些权限更改。

首先WRITE_EXTERNEL_STORAGE权限在API 级别 28之后被弃用。 因此,如果您请求该权限,它将始终返回denied

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />

其次, READ_EXTERNAL_STORAGEAPI 级别 32之后被弃用。 如果您在Android 13中使用它,它将返回denied

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

或者,如果您想访问Android 13中其他应用的照片和视频,您可以请求以下权限。

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

使用此依赖项获取权限

  implementation 'com.karumi:dexter:6.2.3'

如何实现看这里

你可以在下一个活动中请求许可并将延迟时间从 600 增加到 1500

暂无
暂无

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

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