Merge "Support Background Service Limitations." am: a0f863d4fb

am: b747134254

Change-Id: I14259c8d36028440323f940e212c9099a62a6c87
This commit is contained in:
hirotaka motegi
2018-01-27 00:13:47 +00:00
committed by android-build-merger

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;