- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
documentation for PendingIntent
声明在 PendingIntent.getBroadcast()
中,requestCode
参数“当前未使用”。但是,我做了一些非常详尽的测试,设置不同的 requestCode
非常明显地改变了程序的行为(并且设置不同的 requestCode
似乎是一种普遍接受的区分方法警报的 Intent )。
很明显 requestCode
被使用的事实是一个有被“修复”风险的错误吗?或者我可以继续使用它来区分我的 PendingIntents 吗?
一些背景:
我在主 Activity 中使用以下代码为 onCreate
设置了一个测试应用程序:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("text", "text one");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 1);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("text", "text two");
pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 10);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
}
还有一个非常简单的AlarmReceiver:
public class MyAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("text"), Toast.LENGTH_SHORT).show();
}
}
然后我尝试为 PendingIntents 设置不同的标志和 requestCodes。这些是结果:
https://docs.google.com/spreadsheet/ccc?key=0AnqelXkzmAL0dDNYeVEyekJyRkV1VDZNVVIyQTJkdmc#gid=0
最佳答案
requestCode
绝对被使用并且已经使用了很长一段时间。 Android 文档已过时并且已经存在了很长一段时间。检查 AOSP 源以确认是否需要。
关于android - 为什么说PendingIntent.getBroadcast()中的requestCode没有被使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15694364/
我认为 requestCode 是某种标识符,仅需要 Intent 或类似的东西,如果我错了,请纠正我。但是如果是这种情况,为什么如果我的pendingintent 的requestCode 是2,当
我有一个使用 startActivityForResult(intent,634) 的 Activity。如果我从 Activity 中使用它,onActivityResult() 中的 reques
我想知道我是否正确理解了 requestCode 和 resultCode 的概念?基本上,我有一个与 Activity 关联的任意整数(requestCode)。例如,在 Notepad tutor
我遇到了问题,但不知道如何解决: 我想在 AndroidStudio 中启动一个结果 Activity ,因此之前我使用 startActivityForResult(intent,1); 并且一切正
我使用请求代码从 MainActivity 调用到 InfomationActivity。但是,当返回 MainActivity 时,它处于非 Activity 状态。这里有什么问题? 在 MainA
为什么显示我的 toast 消息?我的 CEVAP_SORGULA 变量等于 322,但我的 Intent 请求代码是 332 private final static int CEVAP_SORGU
当您调用 startActivityForResult() 时,您还提供“int requestCode”。您如何在启动的 Activity 中获取该参数(以更改那里的一些初始化)? 或者我理解这个参
任何人都可以列出要与 startActivityForResult() 一起传递的 requestCode 的值及其用途吗?另外,您能否解释 setResult 可用的参数,例如 RESULT_OK
我正在尝试关闭从我自己的 Activity 中打开的 Activity 。我认为完成 Activity 是更好的方法,但它不起作用。这是我打开 Activity 的代码。 (与第三方包一起使用,这可能
我正在尝试实现一个提醒应用程序。我将所有提醒详细信息存储在 sqlite 数据库中,例如 id、标题、dateInfo、timeInfo 等。 我想在适当的时候通知用户我将使用 AlarmManage
我正在使用 AlarmManager安排 1 到 35 个警报之间的任意位置(取决于用户输入)。当用户请求安排新的闹钟时,我需要取消当前的闹钟,因此我使用相同的 requestCode 创建所有闹钟,
ActivityCompat.requestPermissions 之类的方法要求我向它们传递一个请求代码,以便稍后在回调中进行测试(在本例中为 onRequestPermissionsResult)
背景: 我正在通过 AlarmManager 使用 PendingIntent 进行警报。 问题: 一开始我以为要取消之前的,我必须提供我之前用来启动警报的确切 requestCode。 但后来我发现
我正在从我的 Fragment 开始一个新的 Activity startActivityForResult(intent, 1); 并希望在 Fragment 的父 Activity 中处理结果:
因为startActivityForResult已弃用。 所以我替换 startActivityForResult至registerForActivityResult这是我的代码: ActivityR
我正在类里面制作一个基本的 android/kotlin 警报应用程序。一旦触发警报,我希望能够从 SQLite 数据库中删除警报,或者如果它是重复警报,则重新设置警报。对于这两个,我需要来自 pen
我不知道我哪里错了。这可能是一个微不足道的错误,但我无法弄清楚。 形成我的第一个 Activity 我开始另一个 Activity 的结果: Intent ccard_intent= new Inte
我正在调用以下方法: Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); st
我看了https://developer.android.com/reference/android/app/Activity对于 startActivityForResult 和 Google Si
我正在开发一个 Android 应用程序,其中包含一个具有多个 fragment 的主机 Activity 。我在我的主机 Activity 和我的 fragment 中使用了 onActivityR
我是一名优秀的程序员,十分优秀!