Android uygulamalarda bildirim gönderebilmek için Android 13 ve üstünde bildirim izni almamız gerekiyor.
Bunu nasıl yapacağınızı göstermek istiyorum.

Öncelikle uygulama Android 13 ve üzerini destekliyorsa yani targetSdk ve compileSdk sürüm kodu 33 ve üzeri ise bu işlemi yapacağız.
Android 13'ü desteklediğini nasıl anlarım?
Gradle Scripts > build.gradle (Module: ******.app) dosyasını açın.
compileSdk ve targetSdk kodunuz aşağıdaki gibi 33 veya üstü ise Android 13 sürümünü destekliyordur.

Adım 1
app > manifest > AndroidManifest.xml dosyasını açın.
Aşağıdaki gibi vereceğim izin kodunu ekleyin.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

Adım 2
İzin almak için göstereceğimiz ekranı hangi activity'de görmek istiyorsak o activity'i açın.
(Örnek olarak ben MainActivity'de göstereceğim.)
Aşağıdaki gibi yazdığım kodu ekleyerek sizlerde bildirim göndermek için kullanıcıdan izin isteyebilirsiniz.

private SharedPreferences Preferences; // Bildirim için izin ekranını bir kere gösterebilmek için küçük çaplı bir veri tutacağız bunun içinde SharedPreferences kullanıyoruz. private SharedPreferences.Editor Editor; // Bildirim izin ekranını gösterdikten sonra veri kaydetmek için Editor kullanmamız gerekiyor.
// Burada Editor ve SharedPreferences tanımlıyoruz, Modunu Private yani özel yaptık yani diğer uygulamalardan bu veriye erişilemez yapmış olduk Preferences = getSharedPreferences(BuildConfig.APPLICATION_ID, Activity.MODE_PRIVATE); Editor = Preferences.edit();
if (Build.VERSION.SDK_INT >= 33 && !Preferences.getBoolean("NotifyPermission", false)) { // Burada eğer android sürümü 13 ve üstü ise ve bildirim izni ekranı daha önce hiç gösterilmemişse aşağıdaki işlemleri yap diyoruz.
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { // Burada uygulamaya bildirim izni verilmemiş ise aşağıdaki işlemleri yap diyoruz.
ActivityResultLauncher<String> requestPermissionLauncher =
registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { // Bildirim izin ekranındaki kullanıcının yaptığı işlemi yani kabul ettiğini veya etmediğini döndürüyor.
if (isGranted) // eğer izin verdiyse alttaki yazıyı gösteriyor.
Toast.makeText(this, "Tebrikler! Uygulamanın bildirimlerini alacaksınız.", Toast.LENGTH_SHORT).show();
else // eğer izin vermediyse alttaki yazıyı gösteriyor.
Toast.makeText(this, "Üzgünüz! Uygulamanın bildirimlerini alamayacaksınız.", Toast.LENGTH_SHORT).show();
Editor.putBoolean("NotifyPermission", true); // Bildirim izin ekranı gösterildiği için veriye true değerini atıyoruz.
Editor.apply(); // Değeri kaydediyoruz.
});
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS); // Bildirim izin ekranını gösteriyoruz.
}
}Kodun Tamamıpublic class MainActivity extends AppCompatActivity {
private SharedPreferences Preferences;
private SharedPreferences.Editor Editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Preferences = getSharedPreferences(BuildConfig.APPLICATION_ID, Activity.MODE_PRIVATE);
Editor = Preferences.edit();
if (Build.VERSION.SDK_INT >= 33 && !Preferences.getBoolean("NotifyPermission", false)) {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
ActivityResultLauncher<String> requestPermissionLauncher =
registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
if (isGranted)
Toast.makeText(this, "Tebrikler! Uygulamanın bildirimlerini alacaksınız.", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "Üzgünüz! Uygulamanın bildirimlerini alamayacaksınız.", Toast.LENGTH_SHORT).show();
Editor.putBoolean("NotifyPermission", true);
Editor.apply();
});
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);
}
}
}
}Eğer POST_NOTIFICATIONS tanımlanmadı hatası alırsanız.Aşağıdaki gibi
import android.Manifest;ekleyin

