From e2d0329635940762f159028e66f6805d07375bfa Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 2 Sep 2015 19:28:47 +1200 Subject: [PATCH] Call missing method via reflection --- app/build.gradle | 4 ++-- .../java/org/traccar/client/TrackingService.java | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ae1274a..dcfae4b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 22 + compileSdkVersion 23 buildToolsVersion '22.0.1' defaultConfig { minSdkVersion 3 - targetSdkVersion 22 + targetSdkVersion 23 versionCode 25 versionName '3.5' } diff --git a/app/src/main/java/org/traccar/client/TrackingService.java b/app/src/main/java/org/traccar/client/TrackingService.java index 63f0477..f29c1b7 100644 --- a/app/src/main/java/org/traccar/client/TrackingService.java +++ b/app/src/main/java/org/traccar/client/TrackingService.java @@ -19,12 +19,16 @@ import android.annotation.TargetApi; import android.app.Notification; import android.app.PendingIntent; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.IBinder; import android.preference.PreferenceManager; import android.util.Log; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + public class TrackingService extends Service { private static final String TAG = TrackingService.class.getSimpleName(); @@ -50,8 +54,16 @@ public class TrackingService extends Service { PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); Notification notification = new Notification(android.R.drawable.stat_notify_sync_noanim, null, 0); - notification.setLatestEventInfo( - this, getString(R.string.app_name), getString(R.string.settings_status_on_summary), pendingIntent); + try { + Method method = notification.getClass().getMethod("setLatestEventInfo", Context.class, CharSequence.class, CharSequence.class, PendingIntent.class); + try { + method.invoke(notification, this, getString(R.string.app_name), getString(R.string.settings_status_on_summary), pendingIntent); + } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) { + Log.w(TAG, e); + } + } catch (SecurityException | NoSuchMethodException e) { + Log.w(TAG, e); + } int notificationId = NOTIFICATION_ID;