在我的應用程序中,我使用BroadcastReceiver來跟蹤電話狀態。Android:我的應用程序未使用時運行服務
TelephonyManager中有3個可用狀態。
- EXTRA_STATE_IDLE
- EXTRA_STATE_OFFHOOK
- EXTRA_STATE_RINGING
在我的情況我想顯示簡單的用戶界面,顯示有關呼叫者的一些細節,而在電話鈴聲響起,我想關閉當用戶或通話出席的呼叫結束時。
當手機狀態爲振鈴時,我正在撥打我的服務。如果我的應用程序正在使用,那麼當電話響起時,我可以看到我的用戶界面部分。如果我的應用程序不在使用,那麼我不能看到用戶界面部分。
我在後臺已經檢查。該服務沒有運行。我認爲我的服務只在我的應用程序正在使用時運行,並且在我的應用程序未被使用時未運行。
爲了克服這個我該怎麼辦?
這是我的代碼。
@Override
public void onReceive(Context context, Intent intent) {
LoginActivity.login.finish();
MainActivity.main.finish();
telephonyRegister(context,intent);
}
public void telephonyRegister(final Context context, Intent intent)
{
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imeiSIM1= telephony.getDeviceId();
System.out.println("IMEI NUMBER"+imeiSIM1);
ctx=context;
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_IDLE)) {
try
{
ProjectDailogActivity.projdialog.finish();
}catch(Exception e)
{
e.printStackTrace();
}
}
else if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK))
{
try{
ProjectDailogActivity.projdialog.finish();
}catch(Exception e)
{
e.printStackTrace();
}
}
else if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_RINGING)){
phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
isringing=true;
Intent intent11 = new Intent(ctx,ProjectDailogActivity.class);
intent11.putExtra("incoming_number",phoneNumber);
intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent11);
}
}
的Manifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<receiver android:name="com.domyhome.broadcastreceiver.IncomingCallInterceptor" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
我喜歡truecaller窗口。
只是我提到的值是默認值。
但是當我的應用程序未被使用時,相同的窗口不會來。
請給我一個主意。
其實它類似於一個truecaller應用。所以它應該始終在後臺運行。當我的應用程序未被使用時,我可以看到用戶界面。我也試過服務和沒有服務(只是直接從響鈴狀態調用一個活動)。但是當我的應用程序還沒有使用時,我想顯示UI? – 2014-11-21 12:07:55
您可以通過上述方法實現您的要求。您可以定義startactivity(intent(從您的broadcastreciever – therealprashant 2014-11-21 12:09:30
請檢查我的問題,我已更新 – 2014-11-21 12:17:03