在我的应用程序中,我使用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