diff options
| author | 2018-01-27 00:26:13 +0000 | |
|---|---|---|
| committer | 2018-01-27 00:26:13 +0000 | |
| commit | 33cf140d12a017a970ebef11f91b647e254225f0 (patch) | |
| tree | 499ce481df06bcd4e5c61e62fdd950a8ec2457d4 | |
| parent | 8968ed9ee01185881fffa63e5d502e86536aa8df (diff) | |
| parent | 8281e1fc6766d24d5049fe52405d5201cb811269 (diff) | |
Merge "Merge "Support Background Service Limitations." am: a0f863d4fb am: b747134254 am: 7f0e5de1a3"
| -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; |