私は電話状態リスナーで構成されたサービスを持っており、バージョン2.3.3のアプリケーションによって開始されました
アプリケーション Telephone Manager を終了すると、null が取得されるため、電話状態リスナーはサービス コードを動作させません。私はどこで間違っていますか?
アプリケーションを終了してもサービスは破棄されませんが、リスナーは NULL になります。setCallListener() メソッドの電話管理者設定。
phonestatelistener の初期化に使用するサービスがあります。サービスは次の 2 つの方法で開始されます。
1-BOOT_COMPLETEDレシーバーによる(正常に動作し、リスナーがnullではなく、呼び出しをキャッチします)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);
}
}