我正在尝试制作一个我正在使用广播接收器的应用。我的要求是当我在手机中安装我的应用程序并在运行它之后退出时保持我的广播接收器活着。我能够达到这个要求,但是当我使用任务管理器杀死应用程序时,广播接收器没有触发,我也想让我的广播接收器保持活着,即使有人重新启动手机。我的主要活动的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener psl = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
if (state == TelephonyManager.CALL_STATE_RINGING) {
Intent intent2open = new Intent(MainActivity.this,
MainActivity.class);
intent2open.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
| Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
| Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent2open.setAction("android.intent.action.VIEW");
intent2open.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent2open.setAction(Intent.ACTION_MAIN);
intent2open.addCategory(Intent.CATEGORY_LAUNCHER);
intent2open.setFlags(0);
Toast.make_Text(Context(),
"Incoming call" + incomingNumber, Toast.LENGTHLONG)
.show();
}
super.onCallStateChanged(state, incomingNumber);
}
};
telephony Manager.listen(psl, PhoneStateListener.LISTEN_CALL_STATE);
}
以下是我的广播接收器代码:
@Override
public void on Receive(Context context, Intent intent) {
// TO DO Auto-generated method stub
String state = intent.get String Extra(Telephony Manager.ACTION_PHONE_STATE_CHANGED);
if(state.equals(Telephony Manager.CALL_STATE_RINGING))
{
Intent intent2 = new Intent("com.example.app.Activity");
intent2.putExtras(intent2);
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
}
以下是我的manifest.xml代码:
<application
<activity
android:name="com.example.app.Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.example.app.Receiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.example.app.Activity" />
</intent-filter>
</receiver>
</application>
请帮帮我!!! .....提前谢谢你。
答案 0 :(得分:1)
您可以创建服务并在该服务中注册广播接收器。 您应该使用startService启动该服务,以便它始终运行。 为了在重新启动后运行它,创建一个广播接收器,它将注册引导完成动作,这将启动^服务。