Skip to content

Commit

Permalink
added NotificationChannel priority normal and set connext to the broa…
Browse files Browse the repository at this point in the history
…dcastReceiver with channel id
  • Loading branch information
amarradi committed Jul 21, 2023
1 parent 31819d1 commit ee36590
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 8 deletions.
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<application
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
Expand Down Expand Up @@ -38,16 +41,21 @@ public class BirthdayReminder extends ListActivity {
// TODO: call/write message on birthday
// TODO: hideNotificationPref

private static final int PERMISSIONS_REQUEST_WRITE_CONTACTS = 1;
private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 1;
private final DateFormatSymbols dateSymbols = new DateFormatSymbols();

public static final String CHANNEL_ID = BirthdayReminder.class.getName();

private Database db;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createNotificationChannel();
getListView().setFastScrollEnabled(true);



this.db = new Database(getContentResolver());

// debug code
Expand All @@ -62,31 +70,48 @@ public void onCreate(Bundle savedInstanceState) {
// request runtime permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!isContactsPermissionGranted()) {
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, PERMISSIONS_REQUEST_WRITE_CONTACTS);
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS);
}
}
}

private void createNotificationChannel() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.notificationChannelName);
String description = getString(R.string.notificationDescription);
int importance = NotificationManager.IMPORTANCE_DEFAULT;

NotificationChannel notificationChannel = new NotificationChannel(
CHANNEL_ID,
name,
importance);
notificationChannel.setDescription(description);

NotificationManager notificationManager = getSystemService(NotificationManager.class);
assert notificationManager != null;
notificationManager.createNotificationChannel(notificationChannel);
}
}

private boolean isContactsPermissionGranted() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}

return checkSelfPermission(Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED;
return checkSelfPermission(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED;
}

@Override
protected void onResume() {
super.onResume();

if (isContactsPermissionGranted()) {
updateView();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_WRITE_CONTACTS) {
if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
if (isContactsPermissionGranted()) {
updateView();
} else {
Expand All @@ -97,7 +122,9 @@ public void onRequestPermissionsResult(int requestCode, String[] permissions, in

private void updateView() {
// create new list adapter
Log.d("updateView", "true");
MultiListAdapter listAdapter = new MultiListAdapter();

List<ListAdapter> adapterList = listAdapter.getListAdapters();

// load birthday and contact information
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package de.ubuntix.android.birthdayreminder.service;

import static de.ubuntix.android.birthdayreminder.BirthdayReminder.*;

import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
Expand All @@ -9,13 +11,15 @@
import android.content.Intent;
import android.content.res.Resources;


import java.sql.Time;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;


import de.ubuntix.android.birthdayreminder.BirthdayReminder;
import de.ubuntix.android.birthdayreminder.R;
import de.ubuntix.android.birthdayreminder.database.Database;
Expand Down Expand Up @@ -82,8 +86,10 @@ private void notifyBirthdays(Context context) {
Database db = new Database(context.getContentResolver());

Preferences prefs = Preferences.getInstance(context);

NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);

Resources res = context.getResources();

List<Contact> contacts = db.getAllContacts();
Expand Down Expand Up @@ -117,6 +123,7 @@ private void notifyBirthdays(Context context) {
int countBirthdays = 0;
for (Integer days : nextBirthdays.keySet()) {
List<String> birthdayList = nextBirthdays.get(days);
assert birthdayList != null;
String names = StringUtils.join(birthdayList, ", ").toString();
notificationTexts.add(getBirthdayText(res, days, names));
countBirthdays += birthdayList.size();
Expand All @@ -133,12 +140,16 @@ private void notifyBirthdays(Context context) {
PendingIntent pi = PendingIntent.getActivity(
context, 0, intent, PendingIntent.FLAG_IMMUTABLE);

Notification.Builder builder = new Notification.Builder(context);
Notification.Builder builder = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
builder = new Notification.Builder(context,CHANNEL_ID);
}

assert builder != null;
builder.setContentIntent(pi);
builder.setSmallIcon(R.drawable.balloons);
builder.setTicker(titleText);
builder.setContentText(StringUtils.join(notificationTexts, ", "));
builder.setContentText(StringUtils.join(notificationTexts,", "));

if (countBirthdays > 1) {
builder.setNumber(countBirthdays);
Expand All @@ -148,6 +159,7 @@ private void notifyBirthdays(Context context) {
}
}


private String getBirthdayText(Resources res, int days, String names) {
String text;
switch (days) {
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@
<string name="editor_phone">Phone</string>
<string name="no_contacts_permission">No permission to read and write contacts</string>


<string name="notificationChannelName">BirthdayReminderNotification</string>
<string name="notificationDescription">Notification to show the next birthdays</string>
</resources>

0 comments on commit ee36590

Please sign in to comment.