0

我有一个服务包括电话状态侦听器,并由我的 application.in 版本 2.3.3 启动

当我退出应用程序电话管理器时获得 null 因此电话状态侦听器在任何想法下都不起作用服务代码?我在哪里做错了?

当我退出应用程序时服务不会破坏。但监听器得到 NULL。setCallListener() 方法上的电话管理器设置。

我有一个服务可以用来初始化phonestatelistener。服务以两种方式启动:

1-通过 BOOT_COMPLETED 接收器(工作正常,侦听器不为空并捕获呼叫) 2-通过我的应用程序与 startService(new Intent(getApplicationContext(), MyPhoneStateListener.class));

问题是,当我的应用程序启动服务时,我的应用程序完成,在这种情况下,我的监听器不起作用。我知道 TelephoneManager=null 值。我如何提供使服务意图在应用程序完成时继续进行?

public class MyPhoneStateListener extends Service{

    SmsBroadcastReceiver _smsbroadcast;
    private Context context;

    MyCustomStateListener myCustomStateListener;
    TelephonyManager telephonymanager;

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
    {
        setCallListener();
        _smsbroadcast=new SmsBroadcastReceiver();
        GetShieldState();  


        return START_STICKY;

    }

    private void setCallListener()
    {

        try
        {
            if (telephonymanager==null)
            {               
                telephonymanager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
                myCustomStateListener = new MyCustomStateListener(context,telephonymanager);
                telephonymanager.listen(myCustomStateListener, PhoneStateListener.LISTEN_CALL_STATE);

            }
        }
        catch(Exception ex)
        { 

        }
    }




    @Override
    public void onCreate() 
    {
        //Log.e("startservis","create");
        context=MyPhoneStateListener.this;      
        super.onCreate();    
    }


    @Override
    public void onDestroy() 
    {
        Log.e("onDestroy","destroy");       
    }



    @Override
    public boolean onUnbind(Intent intent) 
    {
        //Toast.makeText(getApplicationContext(),"unbind:", Toast.LENGTH_SHORT).show();
        return super.onUnbind(intent);
    }

}
4

1 回答 1

0

我认为您忘记在 AndroidManifest.xml 文件中提供以下权限,

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
于 2013-05-16T08:15:23.367 回答