我在使用Android studio编写一个每一天都可以实现闹钟功能的日历面板,但是在build.gradle(:APP)下出现Cannot obtain value from provider of Gradle property 'android.testInstrumentationRunnerArguments.package' at configuration time错误。我尝试过通过升级 Gradle 插件版本,或尝试重新构建我的项目或清理构建缓存,升级了Python pip工具等方法,但仍未解决这个问题。
这是mainactivity.java的代码
package com.example.myapplication;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends Activity {
Button btnSetAlarm;
CalendarView calendarView;
Calendar selectedDate;
PendingIntent pendingIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSetAlarm = (Button) findViewById(R.id.btnSetAlarm);
calendarView = (CalendarView) findViewById(R.id.calendarView);
selectedDate = Calendar.getInstance();
// Set selected date if user clicks on calendar
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView calendarView, int year, int month, int dayOfMonth) {
selectedDate.set(year, month, dayOfMonth);
checkAlarmExists(selectedDate);
}
});
// Set alarm for selected date
btnSetAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Check if alarm is already set for selected date
checkAlarmExists(selectedDate);
// Set alarm
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, selectedDate.getTimeInMillis(), pendingIntent);
// Show success message
Toast.makeText(MainActivity.this, "Alarm set for " + selectedDate.getTime().toString(), Toast.LENGTH_SHORT).show();
}
});
}
// Check if alarm is already set for selected date
private void checkAlarmExists(Calendar selectedDate) {
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_NO_CREATE) != null);
if (alarmUp) {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(MainActivity.this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Alarm Already Set")
.setContentText("An alarm is already set for " + selectedDate.getTime().toString())
.setAutoCancel(true);
notificationManager.notify(0, builder.build());
}
}
这是build.gradlede 的代码
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 33
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 21
targetSdkVersion 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
implementation 'com.github.prolificinteractive:material-calendarview:2.0.1'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}