summaryrefslogtreecommitdiff
path: root/packages/WAPPushManager
diff options
context:
space:
mode:
authorhirotaka motegi <hirotaka.motegi.um@nttdocomo.com>2018-01-27 00:25:51 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-01-27 00:25:51 +0000
commit8281e1fc6766d24d5049fe52405d5201cb811269 (patch)
tree3ea1a23c2ef20b0a601bbfc2af6d1abe85989b91 /packages/WAPPushManager
parentc4181a7cced659dbe95c43a590aface030ee75c9 (diff)
parent7f0e5de1a3987def7a0707ecdabc7401416d1346 (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.java26
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;