1
我有兩個廣播。如何區分SCREEN_ON和PHONE_STATE brodcast接收器
一個用於屏幕開/關,第二個用於電話狀態。如果屏幕打開,我想向用戶顯示我的活動,但如果是通話,則不顯示。
如何管理這個任何幫助將不勝感激..
我有兩個廣播。如何區分SCREEN_ON和PHONE_STATE brodcast接收器
一個用於屏幕開/關,第二個用於電話狀態。如果屏幕打開,我想向用戶顯示我的活動,但如果是通話,則不顯示。
如何管理這個任何幫助將不勝感激..
你需要使用if/else條件,以確定廣播行動:
public static final String Screen_on = "android.intent.action.SCREEN_ON";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Screen_on)) {
// do your job here if screen is on /off
}
else{
// send new intent to your Activity here
Intent intent = new Intent(context,Activity1.class);
intent.putExtra("status","CALL_STATE");
context.startActivity(intent);
Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING) {
// do your job here if PHONE STATE CHNAGED
}
}
}
,並宣佈在AndroidManifest.xml
您的活動爲android:launchMode="singleTask"
和覆蓋onNewIntent recive intent當活動運行時:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
finishactivity();
}
private void finishactivity(){
Intent intent = getIntent();
Bundle extras=intent.getExtras();
if(extras!=null){
if(extras.getString("status").equals("CALL_STATE"))
// finish your Activity here
}
}
我試過這個,但似乎像screen_on首先被稱爲電話狀態假設在screen_on上顯示我的活動,然後在獲得Phone_state接收器之後,不應顯示活動。 – sandy
@sandy:作爲您的問題,此代碼僅在SCREEN_ON Action BroadcastReceiver時才啓動活動。 –
@sandy:看到我的編輯答案也許可以幫助你實現你想找的 –