AdaptiveIconDrawable не может быть приведен к BitmapDrawable - PullRequest
0 голосов
/ 22 октября 2019

У меня проблема с приложением Android (APK). Существует функция создания папки ярлыков с некоторыми приложениями для их повышения, но она не работает, значок никогда не появляется на рабочем столе. Это журнал внутри дампа:

-----infromation----
me=5.0.0(50001914)
codeme=5.0.0(50001914)
appflags=950582788
debug=false
imei=af819adf20205e6a
aid=af819adf20205e6a
board=msm8998
bootloader=unknown
brand=OnePlus
cpu_abi=arm64-v8a
cpu_abi2=unknown
device=OnePlus5T
display=ONEPLUS A5010_43_190624
fingerprint=OnePlus/OnePlus5T/OnePlus5T:9/PKQ1.180716.001/1906100000:user/release-keys
hardware=qcom
host=ubuntu-24
id=PKQ1.180716.001
manufacturer=OnePlus
model=ONEPLUS A5010
product=OnePlus5T
radio=MPSS.AT.2.0.c4.7-00070-8998_GEN_PACK-2.132073.1.179387.1
tags=release-keys
type=user
user=OnePlus
codename=REL
incremental=1906100000
release=9
sdk=28
language=es
channel=200001
actnumber=3
foregact=com.cleanmaster.functionactivity.GameManagerActivity
meminfo=87010/5660/34150/47200/268435456/829,0,872,828,44,0,0,0,0,36,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,16,0,4,0,12,0,0,31816,0,31816,31816,0,0,0,0,0,140,0,324,0,184,140,0,0,0,5833,416,23304,212,2736,416,19940,0,0,0,0,8,0,8,0,0,0,0,1369,836,9968,0,0,836,9132,0,0,78,24,204,0,0,24,180,0,0,2312,788,13264,12,0,788,12464,0,0,1760,80,8192,0,116,80,7996,0,0,2143,28,13652,1072,1088,28,11464,0,0,52,0,840,4,28,0,808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4336,0,4336,4336,0,0,0,0,0,451,0,1320,400,920,0,0,0,0,805,0,1712,740,972,0,0,0,0,68,0,68,68,0,0,0,0,0,508,0,512,508,4,0,0,0,0,93,0,120,92,28,0,0,0,0,104,0,104,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,136,124,12,0,0,0,0,480,56,9632,0,0,56,9576,0,0,174,4,456,12,0,4,440,0,0,1658,728,3176,0,0,728,2448,0,0,53,0,56,52,0,0,4,0,0,2090,28,13596,1020,1088,28,11460,0,0
nativefd=109
runtime=10598
Launcher=OnePlus Launcher
Root=0
storage=80997789696/119123607552
procname=com.cleanmaster.mguard

----exception localized message----
android.graphics.drawable.AdaptiveIconDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

----exception stack trace----
java.lang.ClassCastException: android.graphics.drawable.AdaptiveIconDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
    at com.cleanmaster.ui.game.GameBoxActivity.a(GameBoxActivity.java:1199)
    at com.cleanmaster.functionactivity.GameManagerActivity.w(GameManagerActivity.java:1225)
    at com.cleanmaster.functionactivity.GameManagerActivity.y(GameManagerActivity.java:77)
    at com.cleanmaster.functionactivity.co.onAnimationEnd(GameManagerActivity.java:1011)
    at android.view.animation.Animation$3.run(Animation.java:397)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6940)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
-----dumpkey----
dumpkey=1672528109

Чтобы исправить эту ошибку, я декомпилировал APK, но я не знаю, как его решить и где. Читая некоторые форумы, я обнаружил, что некоторые люди работают над этой темой с чем-то вроде:

@NonNull
private Bitmap getBitmapFromDrawable(@NonNull Drawable drawable) {
    final Bitmap bmp = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    final Canvas canvas = new Canvas(bmp);
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);
    return bmp;
}

if (icon == null)
        icon = getBitmapFromDrawable(activity.getApplicationInfo().loadIcon(activity.getPackageManager()));

Но, как я уже говорил, я не знаю, где и как это реализовать, чтобы решить эту проблему. вопрос. Вот декомпилированный проект: https://drive.google.com/open?id=1O0xbWy8wXSj6zLsTqjmTvAmMi-Mzi4sf Спасибо! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...