Support Background Service Limitations.

In order to receive SMS-Push,
Target SDK will use "Context.startForegroundService ()" API
for more than 26 service applications.

Test: manual

Bug: 63048126
Change-Id: I701eab6002d01cfc6e559db7aad5455781dc162c
Signed-off-by: hirotaka motegi <hirotaka.motegi.um@nttdocomo.com>
This commit is contained in:
hirotaka motegi
2018-01-12 19:09:34 +09:00
committed by Amit Mahajan
parent 2fef505e1e
commit 233baef5b2

View File

@@ -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;