diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7b9d8c27..9910d2cc 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -138,5 +138,6 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
+
\ No newline at end of file
diff --git a/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java b/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java
index 85bd02be..dbff1a60 100644
--- a/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java
+++ b/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java
@@ -4,7 +4,6 @@ import android.content.ClipboardManager;
import android.content.Context;
import android.util.Log;
-import androidx.core.app.NotificationManagerCompat;
import androidx.multidex.MultiDexApplication;
import com.facebook.drawee.backends.pipeline.Fresco;
@@ -26,7 +25,6 @@ import static awais.instagrabber.utils.Utils.clipboardManager;
import static awais.instagrabber.utils.Utils.dataBox;
import static awais.instagrabber.utils.Utils.datetimeParser;
import static awais.instagrabber.utils.Utils.logCollector;
-import static awais.instagrabber.utils.Utils.notificationManager;
import static awais.instagrabber.utils.Utils.settingsHelper;
public final class InstaGrabberApplication extends MultiDexApplication {
@@ -67,9 +65,6 @@ public final class InstaGrabberApplication extends MultiDexApplication {
LocaleUtils.setLocale(getBaseContext());
- if (notificationManager == null)
- notificationManager = NotificationManagerCompat.from(appContext);
-
if (clipboardManager == null)
clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
diff --git a/app/src/main/java/awais/instagrabber/activities/MainActivity.java b/app/src/main/java/awais/instagrabber/activities/MainActivity.java
index d6b2f7b0..6d962c07 100644
--- a/app/src/main/java/awais/instagrabber/activities/MainActivity.java
+++ b/app/src/main/java/awais/instagrabber/activities/MainActivity.java
@@ -2,13 +2,20 @@ package awais.instagrabber.activities;
import android.annotation.SuppressLint;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
+import android.content.ServiceConnection;
import android.content.res.TypedArray;
import android.database.MatrixCursor;
import android.net.Uri;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
+import android.os.IBinder;
import android.provider.BaseColumns;
import android.util.Log;
import android.view.Menu;
@@ -21,10 +28,12 @@ import androidx.annotation.Nullable;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.app.NotificationManagerCompat;
import androidx.lifecycle.LiveData;
import androidx.navigation.NavBackStackEntry;
import androidx.navigation.NavController;
import androidx.navigation.NavDestination;
+import androidx.navigation.NavDirections;
import androidx.navigation.ui.NavigationUI;
import com.google.android.material.appbar.AppBarLayout;
@@ -43,10 +52,12 @@ import awais.instagrabber.adapters.SuggestionsAdapter;
import awais.instagrabber.asyncs.SuggestionsFetcher;
import awais.instagrabber.customviews.helpers.CustomHideBottomViewOnScrollBehavior;
import awais.instagrabber.databinding.ActivityMainBinding;
+import awais.instagrabber.fragments.settings.MorePreferencesFragmentDirections;
import awais.instagrabber.interfaces.FetchListener;
import awais.instagrabber.models.IntentModel;
import awais.instagrabber.models.SuggestionModel;
import awais.instagrabber.models.enums.SuggestionType;
+import awais.instagrabber.services.ActivityCheckerService;
import awais.instagrabber.utils.Constants;
import awais.instagrabber.utils.CookieUtils;
import awais.instagrabber.utils.FlavorTown;
@@ -93,7 +104,21 @@ public class MainActivity extends BaseLanguageActivity {
private boolean showSearch = true;
private Handler suggestionsFetchHandler;
private int firstFragmentGraphIndex;
- private boolean isLoggedIn;
+ private boolean isActivityCheckerServiceBound = false;
+
+ private final ServiceConnection serviceConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(final ComponentName name, final IBinder service) {
+ // final ActivityCheckerService.LocalBinder binder = (ActivityCheckerService.LocalBinder) service;
+ // final ActivityCheckerService activityCheckerService = binder.getService();
+ isActivityCheckerServiceBound = true;
+ }
+
+ @Override
+ public void onServiceDisconnected(final ComponentName name) {
+ isActivityCheckerServiceBound = false;
+ }
+ };
static {
NAV_TO_MENU_ID_MAP.put(R.navigation.direct_messages_nav_graph, R.id.direct_messages_nav_graph);
@@ -112,6 +137,7 @@ public class MainActivity extends BaseLanguageActivity {
setContentView(binding.getRoot());
final Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
+ createNotificationChannels();
if (savedInstanceState == null) {
setupBottomNavigationBar(true);
}
@@ -120,9 +146,11 @@ public class MainActivity extends BaseLanguageActivity {
final boolean checkUpdates = settingsHelper.getBoolean(Constants.CHECK_UPDATES);
if (checkUpdates) FlavorTown.updateCheck(this);
FlavorTown.changelogCheck(this);
-
final Intent intent = getIntent();
handleIntent(intent);
+ if (!TextUtils.isEmpty(cookie) && settingsHelper.getBoolean(Constants.CHECK_ACTIVITY)) {
+ bindActivityCheckerService();
+ }
}
@Override
@@ -176,6 +204,24 @@ public class MainActivity extends BaseLanguageActivity {
handleIntent(intent);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ unbindActivityCheckerService();
+ }
+
+ private void createNotificationChannels() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
+ notificationManager.createNotificationChannel(new NotificationChannel(Constants.DOWNLOAD_CHANNEL_ID,
+ Constants.DOWNLOAD_CHANNEL_NAME,
+ NotificationManager.IMPORTANCE_DEFAULT));
+ notificationManager.createNotificationChannel(new NotificationChannel(Constants.ACTIVITY_CHANNEL_ID,
+ Constants.ACTIVITY_CHANNEL_NAME,
+ NotificationManager.IMPORTANCE_DEFAULT));
+ }
+ }
+
private void setupSuggestions() {
suggestionsFetchHandler = new Handler();
suggestionAdapter = new SuggestionsAdapter(this, (type, query) -> {
@@ -318,7 +364,7 @@ public class MainActivity extends BaseLanguageActivity {
private void setupBottomNavigationBar(final boolean setDefaultFromSettings) {
int main_nav_ids = R.array.main_nav_ids;
final String cookie = settingsHelper.getString(Constants.COOKIE);
- isLoggedIn = !TextUtils.isEmpty(cookie) && CookieUtils.getUserIdFromCookie(cookie) != null;
+ final boolean isLoggedIn = !TextUtils.isEmpty(cookie) && CookieUtils.getUserIdFromCookie(cookie) != null;
if (!isLoggedIn) {
main_nav_ids = R.array.logged_out_main_nav_ids;
binding.bottomNavView.getMenu().clear();
@@ -429,6 +475,10 @@ public class MainActivity extends BaseLanguageActivity {
final String type = intent.getType();
// Log.d(TAG, action + " " + type);
if (Intent.ACTION_MAIN.equals(action)) return;
+ if (Constants.ACTION_SHOW_ACTIVITY.equals(action)) {
+ showActivityView();
+ return;
+ }
if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.equals("text/plain")) {
handleUrl(intent.getStringExtra(Intent.EXTRA_TEXT));
@@ -511,4 +561,25 @@ public class MainActivity extends BaseLanguageActivity {
bundle.putString("hashtag", "#" + hashtag);
navController.navigate(R.id.action_global_hashTagFragment, bundle);
}
+
+ private void showActivityView() {
+ binding.bottomNavView.setSelectedItemId(R.id.more_nav_graph);
+ binding.bottomNavView.post(() -> {
+ final NavController navController = currentNavControllerLiveData.getValue();
+ if (currentNavControllerLiveData == null || navController == null) return;
+ final NavDirections navDirections = MorePreferencesFragmentDirections.actionMorePreferencesFragmentToNotificationsViewer();
+ navController.navigate(navDirections);
+ });
+ }
+
+ private void bindActivityCheckerService() {
+ bindService(new Intent(this, ActivityCheckerService.class), serviceConnection, Context.BIND_AUTO_CREATE);
+ isActivityCheckerServiceBound = true;
+ }
+
+ private void unbindActivityCheckerService() {
+ if (!isActivityCheckerServiceBound) return;
+ unbindService(serviceConnection);
+ isActivityCheckerServiceBound = false;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/awais/instagrabber/asyncs/DownloadAsync.java b/app/src/main/java/awais/instagrabber/asyncs/DownloadAsync.java
index e5cc4489..ddea126c 100755
--- a/app/src/main/java/awais/instagrabber/asyncs/DownloadAsync.java
+++ b/app/src/main/java/awais/instagrabber/asyncs/DownloadAsync.java
@@ -1,7 +1,5 @@
package awais.instagrabber.asyncs;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context;
@@ -28,6 +26,7 @@ import androidx.core.content.FileProvider;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.atomic.AtomicReference;
@@ -35,17 +34,16 @@ import java.util.concurrent.atomic.AtomicReference;
import awais.instagrabber.BuildConfig;
import awais.instagrabber.R;
import awais.instagrabber.interfaces.FetchListener;
+import awais.instagrabber.utils.Constants;
import awais.instagrabber.utils.Utils;
-import static awais.instagrabber.utils.Constants.CHANNEL_ID;
-import static awais.instagrabber.utils.Constants.CHANNEL_NAME;
import static awais.instagrabber.utils.Constants.NOTIF_GROUP_NAME;
-import static awais.instagrabber.utils.Utils.isChannelCreated;
import static awais.instagrabber.utils.Utils.logCollector;
-import static awais.instagrabber.utils.Utils.notificationManager;
import static awaisomereport.LogCollector.LogFile;
public final class DownloadAsync extends AsyncTask {
+ private static final String TAG = "DownloadAsync";
+
private static int lastNotifId = 1;
private final int currentNotifId;
private final AtomicReference context;
@@ -55,8 +53,12 @@ public final class DownloadAsync extends AsyncTask {
private final Resources resources;
private final NotificationCompat.Builder downloadNotif;
private String shortCode, username;
+ private final NotificationManagerCompat notificationManager;
- public DownloadAsync(final Context context, final String url, final File outFile, final FetchListener fetchListener) {
+ public DownloadAsync(@NonNull final Context context,
+ final String url,
+ final File outFile,
+ final FetchListener fetchListener) {
this.context = new AtomicReference<>(context);
this.resources = context.getResources();
this.url = url;
@@ -66,23 +68,18 @@ public final class DownloadAsync extends AsyncTask {
this.currentNotifId = ++lastNotifId;
if (++lastNotifId + 1 == Integer.MAX_VALUE) lastNotifId = 1;
- if (notificationManager == null)
- notificationManager = NotificationManagerCompat.from(context.getApplicationContext());
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !isChannelCreated) {
- notificationManager.createNotificationChannel(new NotificationChannel(CHANNEL_ID,
- CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH));
- isChannelCreated = true;
- }
-
@StringRes final int titleRes = R.string.downloader_downloading_post;
+ downloadNotif = new NotificationCompat.Builder(context, Constants.DOWNLOAD_CHANNEL_ID)
+ .setCategory(NotificationCompat.CATEGORY_STATUS)
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentText(shortCode == null ? username : shortCode)
+ .setOngoing(true)
+ .setProgress(100, 0, false)
+ .setAutoCancel(false)
+ .setOnlyAlertOnce(true)
+ .setContentTitle(resources.getString(titleRes));
- downloadNotif = new NotificationCompat.Builder(context, CHANNEL_ID).setCategory(NotificationCompat.CATEGORY_STATUS)
- .setSmallIcon(R.mipmap.ic_launcher)
- .setContentText(shortCode == null ? username : shortCode).setOngoing(true)
- .setProgress(100, 0, false).setAutoCancel(false).setOnlyAlertOnce(true)
- .setContentTitle(resources.getString(titleRes));
-
+ notificationManager = NotificationManagerCompat.from(context.getApplicationContext());
notificationManager.notify(currentNotifId, downloadNotif.build());
}
@@ -158,7 +155,7 @@ public final class DownloadAsync extends AsyncTask {
new Pair<>("downloadNotif", downloadNotif),
new Pair<>("currentNotifId", currentNotifId),
new Pair<>("notificationManager", notificationManager));
- if (BuildConfig.DEBUG) Log.e("AWAISKING_APP", "", e);
+ if (BuildConfig.DEBUG) Log.e(TAG, "", e);
}
return null;
}
@@ -193,12 +190,12 @@ public final class DownloadAsync extends AsyncTask {
final ContentResolver contentResolver = context.getContentResolver();
Bitmap bitmap = null;
if (Utils.isImage(uri, contentResolver)) {
- try {
- bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));
+ try (final InputStream inputStream = contentResolver.openInputStream(uri)) {
+ bitmap = BitmapFactory.decodeStream(inputStream);
} catch (final Exception e) {
if (logCollector != null)
logCollector.appendException(e, LogFile.ASYNC_DOWNLOADER, "onPostExecute::bitmap_1");
- if (BuildConfig.DEBUG) Log.e("AWAISKING_APP", "", e);
+ if (BuildConfig.DEBUG) Log.e(TAG, "", e);
}
}
diff --git a/app/src/main/java/awais/instagrabber/asyncs/GetActivityAsyncTask.java b/app/src/main/java/awais/instagrabber/asyncs/GetActivityAsyncTask.java
index d79f15c1..ff65a56b 100644
--- a/app/src/main/java/awais/instagrabber/asyncs/GetActivityAsyncTask.java
+++ b/app/src/main/java/awais/instagrabber/asyncs/GetActivityAsyncTask.java
@@ -9,25 +9,24 @@ import java.net.HttpURLConnection;
import java.net.URL;
import awais.instagrabber.utils.Constants;
+import awais.instagrabber.utils.CookieUtils;
import awais.instagrabber.utils.NetworkUtils;
import awais.instagrabber.utils.TextUtils;
-public class GetActivityAsyncTask extends AsyncTask {
+public class GetActivityAsyncTask extends AsyncTask {
private static final String TAG = "GetActivityAsyncTask";
- private String uid;
- private String cookie;
+
private OnTaskCompleteListener onTaskCompleteListener;
- public GetActivityAsyncTask(final String uid, final String cookie, final OnTaskCompleteListener onTaskCompleteListener) {
- this.uid = uid;
- this.cookie = cookie;
+ public GetActivityAsyncTask(final OnTaskCompleteListener onTaskCompleteListener) {
this.onTaskCompleteListener = onTaskCompleteListener;
}
- protected NotificationCounts doInBackground(Void... voids) {
- if (TextUtils.isEmpty(cookie)) {
- return null;
- }
+ protected NotificationCounts doInBackground(final String... cookiesArray) {
+ if (cookiesArray == null) return null;
+ final String cookie = cookiesArray[0];
+ if (TextUtils.isEmpty(cookie)) return null;
+ final String uid = CookieUtils.getUserIdFromCookie(cookie);
final String url = "https://www.instagram.com/graphql/query/?query_hash=0f318e8cfff9cc9ef09f88479ff571fb"
+ "&variables={\"id\":\"" + uid + "\"}";
HttpURLConnection urlConnection = null;
@@ -40,9 +39,13 @@ public class GetActivityAsyncTask extends AsyncTask {
+ shouldRecreate();
+ return true;
+ });
return preference;
}
diff --git a/app/src/main/java/awais/instagrabber/services/ActivityCheckerService.java b/app/src/main/java/awais/instagrabber/services/ActivityCheckerService.java
new file mode 100644
index 00000000..fb01201c
--- /dev/null
+++ b/app/src/main/java/awais/instagrabber/services/ActivityCheckerService.java
@@ -0,0 +1,132 @@
+package awais.instagrabber.services;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.IBinder;
+import android.text.TextUtils;
+
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import awais.instagrabber.R;
+import awais.instagrabber.activities.MainActivity;
+import awais.instagrabber.asyncs.GetActivityAsyncTask;
+import awais.instagrabber.asyncs.GetActivityAsyncTask.NotificationCounts;
+import awais.instagrabber.asyncs.GetActivityAsyncTask.OnTaskCompleteListener;
+import awais.instagrabber.utils.Constants;
+
+import static awais.instagrabber.utils.Utils.settingsHelper;
+
+public class ActivityCheckerService extends Service {
+ private static final String TAG = "ActivityCheckerService";
+ private static final int INITIAL_DELAY_MILLIS = 200;
+ private static final int DELAY_MILLIS = 60000;
+
+ private Handler handler;
+ private OnTaskCompleteListener onTaskCompleteListener;
+ private NotificationManagerCompat notificationManager;
+
+ private final IBinder binder = new LocalBinder();
+ private final Runnable runnable = () -> {
+ final String cookie = settingsHelper.getString(Constants.COOKIE);
+ final GetActivityAsyncTask activityAsyncTask = new GetActivityAsyncTask(onTaskCompleteListener);
+ activityAsyncTask.execute(cookie);
+ };
+
+ public class LocalBinder extends Binder {
+ public ActivityCheckerService getService() {
+ return ActivityCheckerService.this;
+ }
+ }
+
+ @Override
+ public void onCreate() {
+ notificationManager = NotificationManagerCompat.from(getApplicationContext());
+ handler = new Handler();
+ onTaskCompleteListener = result -> {
+ // Log.d(TAG, "onTaskCompleteListener: result: " + result);
+ try {
+ if (result == null) return;
+ final String notification = getNotificationString(result);
+ if (notification == null) return;
+ final String notificationString = getString(R.string.activity_count_prefix) + " " + notification + ".";
+ showNotification(notificationString);
+ } finally {
+ handler.postDelayed(runnable, DELAY_MILLIS);
+ }
+ };
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ startChecking();
+ // Uncomment to test notifications
+ // final String notificationString = getNotificationString(new NotificationCounts(
+ // 1,
+ // 2,
+ // 3,
+ // 4,
+ // 5
+ // ));
+ // showNotification(notificationString);
+ return binder;
+ }
+
+ @Override
+ public boolean onUnbind(final Intent intent) {
+ stopChecking();
+ return super.onUnbind(intent);
+ }
+
+ private void startChecking() {
+ handler.postDelayed(runnable, INITIAL_DELAY_MILLIS);
+ }
+
+ private void stopChecking() {
+ handler.removeCallbacks(runnable);
+ }
+
+ private String getNotificationString(final NotificationCounts result) {
+ final List list = new ArrayList<>();
+ if (result.getRelationshipsCount() != 0) {
+ list.add(getString(R.string.activity_count_relationship, result.getRelationshipsCount()));
+ }
+ if (result.getUserTagsCount() != 0) {
+ list.add(getString(R.string.activity_count_usertags, result.getUserTagsCount()));
+ }
+ if (result.getCommentsCount() != 0) {
+ list.add(getString(R.string.activity_count_comments, result.getCommentsCount()));
+ }
+ if (result.getCommentLikesCount() != 0) {
+ list.add(getString(R.string.activity_count_commentlikes, result.getCommentLikesCount()));
+ }
+ if (result.getLikesCount() != 0) {
+ list.add(getString(R.string.activity_count_likes, result.getLikesCount()));
+ }
+ if (list.isEmpty()) return null;
+ return TextUtils.join(", ", list);
+ }
+
+ private void showNotification(final String notificationString) {
+ final Intent intent = new Intent(getApplicationContext(), MainActivity.class)
+ .setAction(Constants.ACTION_SHOW_ACTIVITY)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ final Notification notification = new NotificationCompat.Builder(this, Constants.ACTIVITY_CHANNEL_ID)
+ .setCategory(NotificationCompat.CATEGORY_STATUS)
+ .setSmallIcon(R.drawable.ic_notif)
+ .setAutoCancel(true)
+ .setPriority(NotificationCompat.PRIORITY_MIN)
+ .setContentTitle(getString(R.string.action_notif))
+ .setContentText(notificationString)
+ .setContentIntent(PendingIntent.getActivity(getApplicationContext(), 1738, intent, PendingIntent.FLAG_UPDATE_CURRENT))
+ .build();
+ notificationManager.notify(Constants.ACTIVITY_NOTIFICATION_ID, notification);
+ }
+}
diff --git a/app/src/main/java/awais/instagrabber/utils/Constants.java b/app/src/main/java/awais/instagrabber/utils/Constants.java
index df57564a..2c636acd 100644
--- a/app/src/main/java/awais/instagrabber/utils/Constants.java
+++ b/app/src/main/java/awais/instagrabber/utils/Constants.java
@@ -71,8 +71,11 @@ public final class Constants {
public static final String FDROID_SHA1_FINGERPRINT = "C1661EB8FD09F618307E687786D5E5056F65084D";
public static final String SKIPPED_VERSION = "skipped_version";
public static final String DEFAULT_TAB = "default_tab";
- public static final String CHANNEL_ID = "InstaGrabber";
- public static final String CHANNEL_NAME = "Instagrabber";
+ public static final String ACTIVITY_CHANNEL_ID = "activity";
+ public static final String DOWNLOAD_CHANNEL_ID = "download";
+ public static final String ACTIVITY_CHANNEL_NAME = "Activity";
+ public static final String DOWNLOAD_CHANNEL_NAME = "Downloads";
public static final String NOTIF_GROUP_NAME = "awais.instagrabber.InstaNotif";
public static final int ACTIVITY_NOTIFICATION_ID = 1800000000;
+ public static final String ACTION_SHOW_ACTIVITY = "show_activity";
}
\ No newline at end of file
diff --git a/app/src/main/java/awais/instagrabber/utils/Utils.java b/app/src/main/java/awais/instagrabber/utils/Utils.java
index 1256c848..6cedc400 100755
--- a/app/src/main/java/awais/instagrabber/utils/Utils.java
+++ b/app/src/main/java/awais/instagrabber/utils/Utils.java
@@ -6,8 +6,6 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ContentResolver;
import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
@@ -21,11 +19,9 @@ import android.webkit.MimeTypeMap;
import android.widget.Toast;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
-import androidx.core.app.NotificationManagerCompat;
import androidx.fragment.app.FragmentManager;
import com.google.android.exoplayer2.database.ExoDatabaseProvider;
@@ -56,9 +52,7 @@ public final class Utils {
public static SettingsHelper settingsHelper;
public static DataBox dataBox;
public static boolean sessionVolumeFull = false;
- public static NotificationManagerCompat notificationManager;
public static final MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
- public static boolean isChannelCreated = false;
public static ClipboardManager clipboardManager;
public static DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
public static SimpleDateFormat datetimeParser;
@@ -122,8 +116,8 @@ public final class Utils {
clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
int toastMessage = R.string.clipboard_error;
- if (clipboardManager != null) {
- clipboardManager.setPrimaryClip(ClipData.newPlainText(Constants.CHANNEL_NAME, string));
+ if (clipboardManager != null && ctxNotNull) {
+ clipboardManager.setPrimaryClip(ClipData.newPlainText(context.getString(R.string.app_name), string));
toastMessage = R.string.clipboard_copied;
}
if (ctxNotNull) Toast.makeText(context, toastMessage, Toast.LENGTH_SHORT).show();