我的广播接收得到,如果我的应用程序不能正常工作,甚至执行 [英] My Broadcast receiver get execute even if my application is not working

查看:119
本文介绍了我的广播接收得到,如果我的应用程序不能正常工作,甚至执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的广播接收装置,仍然得到执行,即使我的应用程序无法正常工作。

作为一个例子,我使用android.intent.action.NEW_OUTGOING_CALL检查呼出,比我停止音乐和推送通知..
但即使我闭上我的应用程序,并杀死所有的任务后,如果我打电话比我得到我的应用程序的通知..
因此,如何管理时,我用我的应用程序来工作,我的广播。
我已经装箱服务播放音乐和2个广播接收文件传入和传出。
帮助解决这个问题。

此外,我怎么能毁了我与运行服务的背后如果用户preSS退出按钮的应用程序。
**更新。我在编辑它和它现在的工作fine..thank你这么多,你的所有

这是我的code

 <活动
        机器人:名字=。MainActivity
        机器人:标签=@字符串/ title_activity_main
        机器人:launchMode =singleTask>
        &所述;意图滤光器>
            <作用机器人:名字=android.intent.action.MAIN/>
            <类机器人:名字=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
          < /活性GT;    <接收机器人:名字=OutgoingCallInterceptor>
        <意向过滤器的android:优先=1>
            <作用机器人:名字=android.intent.action.NEW_OUTGOING_CALL/>
        &所述; /意图滤光器>
    < /接收器>    <接收机器人:名字=IncomingCallInterceptor>
        <意向过滤器的android:优先=1>
            <作用机器人:名字=android.intent.action.PHONE_STATE/>
            <作用机器人:名字=android.media.AUDIO_BECOMING_NOISY/>        &所述; /意图滤光器>
    < /接收器>

更新
大家都建议我我已经接收到主类文件,并从那里注册,但它不会工作。

 公共类MainActivity延伸活动{
RemoteViews布局;
INT SDK_INT;
 广播接收器BR;
 @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
     super.onCreate(savedInstanceState);
     IntentFilter的过滤器=新的IntentFilter(android.media.AUDIO_BECOMING_NOISY);
     this.registerReceiver(BR,过滤器);
     的setContentView(R.layout.activity_main);
         SDK_INT = android.os.Build.VERSION.SDK_INT;
        的System.out.println(SDK_INT);
        按钮启动=(按钮)findViewById(R.id.play);
        按钮来停止=(按钮)findViewById(R.id.stop);
        start.setOnClickListener(startListener);
        stop.setOnClickListener(stopListener);
        BR =新的广播接收器(){
            @覆盖
            公共无效的onReceive(上下文的背景下,意图意图){
                // TODO自动生成方法存根
                 如果(intent.getAction()。等于(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)){
context.stopService(新意图(上下文,myPlayService.class));
                        Toast.makeText(上下文中,耳机断开。,Toast.LENGTH_SHORT).show();
                 }
            }}
        };@覆盖
保护无效的onDestroy(){
    super.onDestroy();
    unregisterReceiver(BR);
}


解决方案

一个例子:一个广播reciver如何可以注册和未注册的变化,按您的需要我希望code是自我解释

 私人最终的BroadcastReceiver XYZ =新的广播接收器(){
@覆盖
公共无效的onReceive(上下文的背景下,意图意图){
    字符串行动= intent.getAction();
// UR reciver
 }
  保护无效的onCreate(捆绑savedInstanceState){
 super.onCreate(savedInstanceState);IntentFilter的过滤器=新的IntentFilter(ACTION); //乌尔行动
this.registerReceiver(XYZ,过滤器);
}@覆盖
保护无效的onDestroy(){
super.onDestroy();
unregisterReceiver(XYZ);
 }

My broadcast receiver is Still getting execute even if My application is not working.

as an example I am using android.intent.action.NEW_OUTGOING_CALL to check outgoing call and than i stop music and push notification .. but even i close my app and kill all task and after if i call than i get notification of my app.. So how do i manage to work my broadcast when i am using my app. I have crated Service to play music and 2 broadcast receiver file for incoming and outgoing. Help to solve this problem.

Also How can i destroy my app with service running behind If user press exit button. **Update I made edited it and its working now fine..thank you so much you all

here is my code

<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>

Update as you all suggest me i have made receiver into main class file and register it from there but it wont work

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);
}

解决方案

an example: how a broadcast reciver can be registered and un registered change as per your need "i hope the code is self explanatory"

 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);
 }

这篇关于我的广播接收得到,如果我的应用程序不能正常工作,甚至执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆