gpt4 book ai didi

android - 是否可以从对话框中调用 onReceive 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:19 25 4
gpt4 key购买 nike

我有一个带有 editTextsave button自定义对话框。单击按钮 时,我希望它调用MyReceiver。但是 MyReceiver 中的日志和 Toast 永远不会显示。

提醒

  final AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
View promptView = getLayoutInflater().inflate(R.layout.dialog_with_edittext, null);
Button save = (Button) promptView.findViewById(R.id.okBtn);
final EditText task = (EditText) promptView.findViewById(R.id.task);
time = (EditText) promptView.findViewById(R.id.time);
date = (EditText) promptView.findViewById(R.id.date);
final AlertDialog alert = builder.create();
date.setOnClickListener(this);

save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String addTask= task.getText().toString();
String time1= time.getText().toString();
String date1= date.getText().toString();
if (adapter != null) {
adapter.add(addTask,time1,date1);
insertTask(addTask, time1, date1);
listview.setAdapter(adapter);
alert.dismiss();
check();
}
c.set(Calendar.YEAR,year1);
c.set(Calendar.MONTH, month1);
c.set(Calendar.DAY_OF_MONTH, day1);
c.set(Calendar.HOUR_OF_DAY, hour1);
c.set(Calendar.MINUTE, min1);
c.set(Calendar.SECOND, 0);
c.set(Calendar.AM_PM,Calendar.AM);
Toast.makeText(getApplicationContext(),year1+""+month1+""+day1+"",Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(),hour1+""+min1+"",Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(ReminderPage.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(ReminderPage.this, 123456789, myIntent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
Toast.makeText(getApplicationContext(),"Alarm",Toast.LENGTH_SHORT).show();
}
});
alert.setView(promptView);
alert.show();
return true;

我的接收者

public class MyReceiver extends BroadcastReceiver
{

@Override
public void onReceive(Context context, Intent intent)
{
Log.i("App", "called receiver method");
try{
Toast.makeText(context,"Call Utils1",Toast.LENGTH_SHORT).show();
Utils1.generateNotification(context);
}catch(Exception e){
Toast.makeText(context,"Not Call Utils1",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}

我还在我的 AndroidMainfest 中添加了这个

 <receiver android:name="com.example.MyReceiver"></receiver>

实用工具1

public class Utils1 {

public static NotificationManager mManager;

@SuppressWarnings("static-access")
public static void generateNotification(Context context){
mManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
Intent intent1 = new Intent(context,Register.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intent1, 0);
Notification.Builder builder = new Notification.Builder(context);
builder.setAutoCancel(false);
builder.setTicker("this is ticker text");
builder.setContentTitle("WhatsApp Notification");
builder.setContentText("You have a new message");
builder.setSmallIcon(R.drawable.done);
builder.setContentIntent(pendingIntent);
builder.setOngoing(true);
builder.setSubText("This is subtext..."); //API level 16
builder.setNumber(100);
builder.build();

Notification myNotication = builder.getNotification();
mManager.notify(0, myNotication);
}
}

如有任何帮助,我们将不胜感激。

最佳答案

根据您的问题,以下步骤将为您提供您想要的。

1.) 在您的 AndroidManifest.xml 中替换您的 receiver

<receiver android:name="com.example.MyReceiver"></receiver>

通过以下方式:

<receiver android:name=".MyReceiver" />

2.) 最后在您的按钮监听器代码中添加:

save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// ...
getApplicationContext().sendBroadcast(
new Intent(getApplicationContext(), MyReceiver.class));
// ...
}
});

就是这样,现在运行您的应用程序。每当您单击 save 按钮时,您会注意到类 MyReceiver 中的 onReceive() 方法将被正确调用。这意味着您的 logcat 输出将是

I/App: called receiver method

正如预期的那样,您的 Toast 消息 Call Utils1 也将正确显示。

关于android - 是否可以从对话框中调用 onReceive 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com