我有一个安卓应用程序,可以播放应用程序类的音频。我的应用程序类中有一个 PhoneStateListener,它在有电话呼叫时暂停音频。
我想在呼叫结束时启动特定活动,但我无法启动。 这是我的代码:
public void getPhoneState(){
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
if(audio.isPlaying())
audioPlayer.pause();
}
else if(state == TelephonyManager.CALL_STATE_IDLE) {
audio.start();
Intent missintent= new Intent(context,AudioActivity.class);
missintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(missintent);
}
else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
if(audio.isPlaying())
audioPlayer.pause();
}
super.onCallStateChanged(state, incomingNumber);
}
};
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
public boolean handleAudio(String source, int id) {
phoneState();
//Code for Playing Audio
.....
.....
}
如果有人能告诉我如何以正确的方式开始活动,我将不胜感激。
谢谢!
好的,所以我知道你已经找到了另一个解决方案,但我正在破解它并找到适合我的东西。 我没有调用意图,而是使用了待处理意图、意图过滤器和待处理帖子。 这是针对其他有此问题的人的代码截图。
Context context = MyApplication.this.getApplicationContext();
Intent errorActivity = new Intent("com.error.activity");//this has to match your intent filter
errorActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 22, errorActivity, 0);
try {
pendingIntent.send();
}
catch (CanceledException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后在清单中,只需确保为捕获活动设置意图过滤器
<activity
android:name="UncaughtErrorDialogActivity"
android:theme="@android:style/Theme.Dialog" >
<intent-filter>
<action android:name="com.error.activity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>