gpt4 book ai didi

android - Android NotificationManager使电话重启

转载 作者:行者123 更新时间:2023-12-03 17:09:52 25 4
gpt4 key购买 nike

说明:
每次我的应用程序在Android 4.4.4上运行时,用户的手机都会非常快速地重新启动,并且不会将崩溃数据发送到Crashlytics。

当我说用户的电话重启时,就像我所见过的最快的重启。

应用程序可以在以下位置正常工作:

  • 4.1.1
  • 6.0.1

  • 其他说明:
  • 我的 friend 在他的4.4.4设备
  • 上重现了该错误。
  • 手机重启后,我创建的后台服务继续(是的,我使用bootReceiver)
  • Link to App on Google Play Store

  • 当我删除下面的“addAction”代码时,该应用程序运行正常:
    public void startNotification(){
    final Intent hideNotificationIntent = new Intent(MainActivity.this, HideWallpaperNotificationService.class);
    final Intent stopIntent = new Intent(MainActivity.this, StopWallpaperService.class);
    final Intent wallpaperCyclerIntent = new Intent(MainActivity.this, MainActivity.class);

    alarmIntent = new Intent(this, SetWallpaperService.class);
    alarmIntent.putStringArrayListExtra(Constants.PREF_WALLPAPERS, mWallpapers);

    PendingIntent nextWallpaperPI = PendingIntent.getService(this.getApplicationContext(), 300, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    PendingIntent stopWallpaperPI = PendingIntent.getService(this.getApplicationContext(), 300, stopIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    PendingIntent showApp = PendingIntent.getActivity(this.getApplicationContext(), 300, wallpaperCyclerIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    PendingIntent hideNotification = PendingIntent.getService(this.getApplicationContext(), 300, hideNotificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    //Button
    NotificationCompat.Action stopAction = new NotificationCompat.Action.Builder(R.drawable.ic_stop_white_18dp, "Stop", stopWallpaperPI).build();
    NotificationCompat.Action nextAction = new NotificationCompat.Action.Builder(R.drawable.ic_arrow_forward_white_24dp, "Next", nextWallpaperPI).build();
    NotificationCompat.Action removeAction = new NotificationCompat.Action.Builder(R.drawable.ic_clear_white_18dp, "Hide", hideNotification).build();

    Bitmap original;
    if(lastSelected == -1)
    original = BitmapFactory.decodeFile(mWallpapers.get(0));
    else
    original = BitmapFactory.decodeFile(mWallpapers.get(lastSelected));

    mBuilder =
    new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.ic_stat_fit)
    .setLargeIcon(original)
    .setWhen(0)
    .setColor(ContextCompat.getColor(this.getApplicationContext(), R.color.colorPrimary))
    .setContentTitle("Wallpaper Cycler")
    .setContentText("Click to open")
    .setContentIntent(showApp)
    .addAction(stopAction)
    .addAction(nextAction)
    .addAction(removeAction);

    notificationManager = (NotificationManager) getSystemService(MainActivity.this.NOTIFICATION_SERVICE);
    Notification n;
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
    n = mBuilder.build();
    }else{
    n = mBuilder.getNotification();
    }
    n.flags |= Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;
    try{
    notificationManager.notify(Constants.NOTIFICATION_ID, n);
    }catch(Exception e){Log.e(TAG,"Error notifying");}
    }

    enter image description here

    最佳答案

    问题是位图太大,因此我使用以下功能调整它们的大小。

        Bitmap original;
    if(lastSelected == -1)
    original = BitmapFactory.decodeFile(mWallpapers.get(0));
    else
    original = BitmapFactory.decodeFile(mWallpapers.get(lastSelected));

    original = returnBitmap(original,150,320);


    public Bitmap returnBitmap(Bitmap originalImage, int width, int height){
    Bitmap background = Bitmap.createBitmap((int)width, (int)height, Bitmap.Config.ARGB_8888);

    float originalWidth = originalImage.getWidth();
    float originalHeight = originalImage.getHeight();

    Canvas canvas = new Canvas(background);

    float scale = width / originalWidth;

    float xTranslation = 0.0f;
    float yTranslation = (height - originalHeight * scale) / 2.0f;

    Matrix transformation = new Matrix();
    transformation.postTranslate(xTranslation, yTranslation);
    transformation.preScale(scale, scale);

    Paint paint = new Paint();
    paint.setFilterBitmap(true);

    canvas.drawBitmap(originalImage, transformation, paint);

    return background;
    }

    关于android - Android NotificationManager使电话重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44908741/

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