gpt4 book ai didi

Pre-Lollipop 设备上的 Android Ripple Drawable 错误 - Android SDK 25

转载 作者:太空狗 更新时间:2023-10-29 13:09:15 27 4
gpt4 key购买 nike

我是 Android 编程和 StackOverflow 的新手。这是我的第一个问题,但是我之前使用过 StackOverflow 平台来寻找解决方案。现在,回答我的问题。我有一个 Android 应用程序,它曾经在 SDK 11 的所有 Android 设备上运行良好。但是,在更新到 SDK 25 时,它在 Lollipop 之前的设备上崩溃了。

我的日志猫如下:

Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering

我在我的 gradle 中包含了 vectorDrawables.useSupportLibrary = true。我的minSdkVersion = 11targetSdkVersion = 25supportLibraryVersion = 25.2.0

我已经尝试了所有我能在这里找到的建议,但都没有用。所以请伙计们,我需要你的帮助。我渴望学习,以便解决这个问题。

谢谢。

最佳答案

调试有时会很痛苦,上面的问题是我原始代码中一个简单错误的结果。人类是会犯错的……

现在是解决方案。我的初始代码如下,如果您仔细观察,您会注意到如果设备版本低于 23,则检查 Build.Version 的 if 语句之间的初始化代码不会运行。

        if(Build.VERSION.SDK_INT >= 23) {
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// Storage permissions is already available, save profile photo

initialization();
} else {
// Providing additional rational to the user if permission was not granted
if(shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this, "Storage permission is needed to save your profile photo.", Toast.LENGTH_LONG).show();
}

requestPermissions(new String[] {Manifest.permission.READ_CONTACTS}, WRITE_EXTERNAL_STORAGE);
}
}

这是初始化方法。在 Android 版本低于 23 的设备中,它不会运行,从而触发 Could not find class 错误。但是我仍然没有弄清楚这与 Ripple Drawable 有什么关系,因为我没有在我的代码中的任何地方使用 Vector Drawables。所以任何读到这篇文章的人都可能对原因有所了解

    private void initialization() {

hoverView = (View) findViewById(R.id.hoverView);
hoverView.setVisibility(View.GONE);

mExitAppDialog = new HookUpDialog(this);
mExitAppDialog.setMessage(getString(R.string.exit_app_message));
mExitAppDialog.setOnButtonClickListener(HookUpDialog.BUTTON_OK,
new OnClickListener() {

@Override
public void onClick(View v) {
mExitAppDialog.dismiss();

if (WallActivity.getInstance() != null) {
WallActivity.getInstance().finish();
}
sInstance.finish();

/* Informing the user, to press back again to exit */
Toast.makeText(getApplicationContext(),
R.string.press_back_again_to_exit,
Toast.LENGTH_SHORT).show();

}
});
mExitAppDialog.setOnButtonClickListener(HookUpDialog.BUTTON_CANCEL,
new OnClickListener() {

@Override
public void onClick(View v) {
mExitAppDialog.dismiss();

}
});
mLlRecentActivity = (LinearLayout) findViewById(R.id.llRecentActivity);
mNoActivitiesView = (TextView) findViewById(R.id.tvNoRecentActivities);
}

现在是完整代码,包括针对 Android 版本 23 及以下设备的 else if 修复。

            if(Build.VERSION.SDK_INT >= 23) {
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// Storage permissions is already available, save profile photo

initialization();
} else {
// Providing additional rational to the user if permission was not granted
if(shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this, "Storage permission is needed to save your profile photo.", Toast.LENGTH_LONG).show();
}

requestPermissions(new String[] {Manifest.permission.READ_CONTACTS}, WRITE_EXTERNAL_STORAGE);
}
} else if (Build.VERSION.SDK_INT < 23 ) {
// Storage permissions is already available, save profile photo

initialization();

}

感谢@Anurag Singh,经过数小时的测试和重新测试,我能够看到这一点。谷歌搜索和谷歌搜索。

关于Pre-Lollipop 设备上的 Android Ripple Drawable 错误 - Android SDK 25,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com