Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f0e5de1 authored by hirotaka motegi's avatar hirotaka motegi Committed by android-build-merger
Browse files

Merge "Support Background Service Limitations." am: a0f863d4

am: b7471342

Change-Id: I14259c8d36028440323f940e212c9099a62a6c87
parents bc2e4a23 b7471342
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -22,11 +22,15 @@ import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.Cursor;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.IBinder;
import android.os.PowerManager;
import android.os.RemoteException;
import android.util.Log;

@@ -216,11 +220,31 @@ public class WapPushManager extends Service {
                intent.setClassName(mContext, lastapp.className);
                intent.setComponent(new ComponentName(lastapp.packageName,
                        lastapp.className));
                PackageManager pm = mContext.getPackageManager();
                PowerManager powerManager =
                        (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
                try {
                    ApplicationInfo appInfo = pm.getApplicationInfo(lastapp.packageName, 0);
                    if (appInfo.targetSdkVersion < Build.VERSION_CODES.O ||
                            powerManager.isIgnoringBatteryOptimizations(lastapp.packageName)) {
                        if (mContext.startService(intent) == null) {
                            Log.w(LOG_TAG, "invalid name " +
                                    lastapp.packageName + "/" + lastapp.className);
                            return WapPushManagerParams.INVALID_RECEIVER_NAME;
                        }
                    } else {
                        if (mContext.startForegroundService(intent) == null) {
                            Log.w(LOG_TAG, "invalid name " +
                                    lastapp.packageName + "/" + lastapp.className);
                            return WapPushManagerParams.INVALID_RECEIVER_NAME;
                        }
                    }

                } catch (NameNotFoundException e) {
                    Log.w(LOG_TAG, "invalid name " +
                            lastapp.packageName + "/" + lastapp.className);
                    return WapPushManagerParams.INVALID_RECEIVER_NAME;
                }
            }

            return WapPushManagerParams.MESSAGE_HANDLED