0
我希望可以點擊對話框和來電屏幕。我已經嘗試過不同的解決方案,但有些在某些情況下有效,而有些則不適用。我想創建一個像真正的來電者的應用程序,我從BroadcastReceiver
調用了一個活動。當屏幕未鎖定時,我的代碼完美工作,因爲傳入的屏幕不是全屏。但是當屏幕全屏時,對話活動會在呼叫屏幕上出現幾毫秒,然後進入呼叫屏幕。鎖定來電屏幕上的對話框
這裏是我的我的活動的代碼,我從廣播接收器
稱爲public class IncomingCallActivity extends AppCompatActivity {
private static final int MSG_ID_CHECK_TOP_ACTIVITY = 1;
private String userName;
private String TAG = IncomingCallActivity.class.getSimpleName();
private Window wind;
private PowerManager powerManager;
private PowerManager.WakeLock wakeLock;
/*private ActivityManager mActivityManager;
private boolean mDismissed = false;*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wind = this.getWindow();
wind.requestFeature(Window.FEATURE_NO_TITLE);
wind.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
wind.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
setContentView(R.layout.activity_incoming_call);
userName = getIntent().getStringExtra(IncomingCallReceiver.NAME_KEY);
final TextView textView = (TextView) findViewById(R.id.tvUsername);
textView.setText(userName);
final ImageView ivCancel = (ImageView) findViewById(R.id.ivCancel);
ivCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wakeLock.release();
IncomingCallActivity.this.finish();
}
});
}
}
我也試過,它將使來電屏幕無法點擊,我想兩個屏幕點擊。 –
添加相同的窗口參數,你將不會面臨這個問題。我使用相同的代碼顯示在傳入呼叫時彈出。並嘗試添加對話框視圖爲LayoutInflater inflater =(LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mDialogView = inflater.inflate(R.layout.small_pop_up_layout, null); –
是的,它與給定的參數一起工作。一個巨大的(偉大)感謝Gautam。我掙扎了很久。 –