Hallo,
ich habe hier eine Nutzer-Abfrage zur Freigabe der Benachrichtigungen der App.
Diese funktioniert:
- auf Endgeräten mit Android 14
Weil der Emulator akkurat seiner Arbeit nachgeht, kann ich keine Exceptions abfangen.
Vielleicht liegt es an irgendwelchen Projekteinstellungen, die ich nicht verstehe, oder das Android 14 System ist instabil - dann müsste das in anderen Apps ebenso passieren, was mir noch nicht aufgefallen ist, da nichts Neues seit dem Update installiert wurde.
Wenn ihr mal drüber schaut, fällt euch etwas auf, das dieses Problem verursachen könnte?
Im build.gradle:
ich habe hier eine Nutzer-Abfrage zur Freigabe der Benachrichtigungen der App.
Diese funktioniert:
- auf Endgeräten mit Android 7, 8, 10, 12, 13
- auf dem Emulator (Bluestacks)
- auf Endgeräten mit Android 14
Weil der Emulator akkurat seiner Arbeit nachgeht, kann ich keine Exceptions abfangen.
Vielleicht liegt es an irgendwelchen Projekteinstellungen, die ich nicht verstehe, oder das Android 14 System ist instabil - dann müsste das in anderen Apps ebenso passieren, was mir noch nicht aufgefallen ist, da nichts Neues seit dem Update installiert wurde.
Wenn ihr mal drüber schaut, fällt euch etwas auf, das dieses Problem verursachen könnte?
Java:
public class MainActivity extends AppCompatActivity implements android.widget.PopupMenu.OnMenuItemClickListener {
final String PERMISSION_POST_NOTIFICATIONS = Manifest.permission.POST_NOTIFICATIONS;
int _requestCode = -1; // dieser Wert ändert sich in Methoden, die hier aus Übersicht ausgelassen wurden
boolean _granted = false;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == _requestCode) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
_granted = true;
} else if (!ActivityCompat.shouldShowRequestPermissionRationale(this, PERMISSION_POST_NOTIFICATIONS)) {
_granted = false;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Erlaubnis erforderlich")
.setMessage("Die Funktion Erinnerungen ist weiterhin nicht verfügbar, da die Zulassung für Benachrichtigungen verweigert wurde.")
.setCancelable(false)
.setNegativeButton("Abbruch", ((dialog, which) -> dialog.dismiss()))
.setPositiveButton("Einstellungen", (dialog, which) -> {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
dialog.dismiss();
});
builder.show();
} else {
isPermissionGranted();
}
}
}
private boolean isPermissionGranted() {
if (ActivityCompat.checkSelfPermission(this, PERMISSION_POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
_granted = true;
} else if (ActivityCompat.shouldShowRequestPermissionRationale(this, PERMISSION_POST_NOTIFICATIONS)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Erlaubnis erforderlich")
.setMessage("Diese App erfordert die Zulassung für Benachrichtigungen.")
.setCancelable(false)
.setPositiveButton("OK", (dialog, which) -> {
ActivityCompat.requestPermissions(MainActivity.this, new String[] { PERMISSION_POST_NOTIFICATIONS }, _requestCode);
_granted = true;
dialog.dismiss();
})
.setNegativeButton("Abbruch", (dialog, which) -> {
_granted = false;
dialog.dismiss();
});
builder.show();
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[] { PERMISSION_POST_NOTIFICATIONS }, _requestCode);
}
return _granted;
}
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
// Hier wird bei Bedarf "isPermissionGranted()" ausgeführt
}
}
Im build.gradle:
Code:
plugins {
id 'com.android.application'
}
android {
namespace 'com.apps.demo2'
compileSdk 34
defaultConfig {
applicationId "com.apps.demo2"
minSdk 24
targetSdk 34
versionCode 1
versionName 'Demo 2'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation files('joda-time')
implementation files('libs\\joda-time-2.12.5.jar')
implementation files('libs\\joda-time-2.12.5.jar')
implementation files('libs\\joda-time-2.12.5.jar')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}