gpt4 book ai didi

android - 即使我的应用程序不工作,我的广播接收器也会执行

转载 作者:行者123 更新时间:2023-11-29 18:07:54 25 4
gpt4 key购买 nike

即使我的应用程序不工作,我的广播接收器仍在执行。

例如,我正在使用 android.intent.action.NEW_OUTGOING_CALL 来检查拨出电话,然后我停止播放音乐并推送通知 ..但即使我关闭我的应用程序并终止所有任务,如果我打电话之后我会收到我的应用程序通知..那么,当我使用我的应用程序时,我如何设法进行广播。我有用于播放音乐的服务和用于传入和传出的 2 个广播接收器文件。帮助解决这个问题。

此外,如果用户按下退出按钮,我如何销毁我的应用程序,服务在后面运行。**更新我对其进行了编辑,现在可以正常工作了..非常感谢你们

这是我的代码

<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />


<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<receiver android:name="OutgoingCallInterceptor">
<intent-filter android:priority="1">
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>

<receiver android:name="IncomingCallInterceptor">
<intent-filter android:priority="1">
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.media.AUDIO_BECOMING_NOISY" />

</intent-filter>
</receiver>

更新正如你们所有人所建议的那样,我已经将接收器制作成主类文件并从那里注册它,但它不会工作

public class MainActivity extends Activity {
RemoteViews layout;
int SDK_INT;
BroadcastReceiver br;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter("android.media.AUDIO_BECOMING_NOISY");
this.registerReceiver(br, filter);
setContentView(R.layout.activity_main);
SDK_INT = android.os.Build.VERSION.SDK_INT;
System.out.println(SDK_INT);
Button start = (Button)findViewById(R.id.play);
Button stop = (Button)findViewById(R.id.stop);
start.setOnClickListener(startListener);
stop.setOnClickListener(stopListener);
br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
context.stopService(new Intent(context, myPlayService.class));
Toast.makeText(context, "Headphones disconnected.", Toast.LENGTH_SHORT).show();
}
} }
};

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(br);
}

最佳答案

示例:如何根据您的需要注册和取消注册广播接收器“我希望代码是不言自明的”

 private final BroadcastReceiver xyz= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//ur reciver
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

IntentFilter filter = new IntentFilter(ACTION);//ur action
this.registerReceiver(xyz, filter);
}

@Override
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(xyz);
}

关于android - 即使我的应用程序不工作,我的广播接收器也会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12423271/

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