【发布时间】:2018-07-20 16:17:24
【问题描述】:
我是 android 新手,这里有两个活动和一个 BroadcastReceiver。
我正在尝试从第一个活动到第二个活动调用 BroadcastReceiver。
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.aviz.www.reminder">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Activity_Classes.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity_Classes.AlarmActivity"
android:screenOrientation="portrait" />
<activity
android:name=".Activity_Classes.CreateAlarm"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".Activity_Classes.WakeUpScreen"></activity>
<receiver
android:name=".AlarmReceiver"
android:enabled="true" />
</application>
</manifest>
WakeUpScreen.java
mStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alarmActivity.stopAlarm(getBaseContext());
}
});
我正在尝试从唤醒屏幕停止警报,因为我调用了 AlarmActivity 中的方法来取消当前的 pendingIntent
AlarmActivity.java
public void stopAlarm(Context context){
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("ALARM_OFF");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,mAlarmId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
通过这个方法(intent)我想调用 BroadcastReceiver 来停止(当前的pendingIntent)警报。
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
MediaPlayer player = MediaPlayer.create(context, R.raw.alarmtone);
String alarmAction = intent.getAction();
if (alarmAction.equals("ALARM_ON")) {
Intent intent1 = new Intent(context, WakeUpScreen.class);
context.startActivity(intent1);
player.setLooping(true);
player.setVolume(100, 100);
player.start();
} else if (alarmAction.equals("ALARM_OFF")) {
player.stop();
player.release();
}
}
}
在调试从 WakeUpScreen.java 调用的应用程序 stopAlarm(Context context) 方法时,调试器也越过了 stopalarm() 方法中的所有行,但没有调用 AlarmReceiver。
谁能帮我解决这个问题。
【问题讨论】:
-
检查我更新的答案。
-
ALARM_ON 和 ALARM_OFF 是针对您的意图的操作或附加功能?
-
这是@Man的动作
-
那你是怎么做的intent.putExtra("Action","ALARM_OFF"),只是额外的。请你从Manifest And Receiver的onReceive方法中发布你的receiver部分吗?
-
我会在 5 分钟内更新我所有的代码@Man
标签: android broadcastreceiver alarmmanager