diff options
author | hirotaka motegi <hirotaka.motegi.um@nttdocomo.com> | 2018-01-27 00:25:51 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-01-27 00:25:51 +0000 |
commit | 8281e1fc6766d24d5049fe52405d5201cb811269 (patch) | |
tree | 3ea1a23c2ef20b0a601bbfc2af6d1abe85989b91 /packages/WAPPushManager | |
parent | c4181a7cced659dbe95c43a590aface030ee75c9 (diff) | |
parent | 7f0e5de1a3987def7a0707ecdabc7401416d1346 (diff) |
Merge "Support Background Service Limitations." am: a0f863d4fb am: b747134254
am: 7f0e5de1a3
Change-Id: Ie5cc9948a7538a8fedcf645a9d419fb74cc9bc3b
Diffstat (limited to 'packages/WAPPushManager')
-rwxr-xr-x[-rw-r--r--] | packages/WAPPushManager/src/com/android/smspush/WapPushManager.java | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java b/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java index e9703670008d..dc2707b6ff8b 100644..100755 --- a/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java +++ b/packages/WAPPushManager/src/com/android/smspush/WapPushManager.java @@ -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,7 +220,27 @@ public class WapPushManager extends Service { intent.setClassName(mContext, lastapp.className); intent.setComponent(new ComponentName(lastapp.packageName, lastapp.className)); - if (mContext.startService(intent) == null) { + 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; |