私はアンドロイドユーザーのためのコンタクトプロバイダを開発しています。主な機能は、誰かが電話をかけたとき(ロックされているかロックされていないか)です。ポップアップウィンドウが表示され、誰が呼び出しているかについての情報が表示されます。問題はアンドロイドのバージョンが7.0未満では正しく動作しますが、モバイルがロックされているときにアンドロイド7.0以上で誰かがコールスクリーンレイアウトの下にPOPUPWINDOWが表示され、ハングアップしたときだけ表示されるということです。だから誰かがポップアップウィンドウをアンドロイド7.0の呼び出し画面のレイアウトの上に表示させる方法を手伝ってくれたら本当に感謝しています。Android 7.0のコール画面の上にポップアップウィンドウを表示する方法
pd。以下のバージョンでは7.0が動作しているので、問題は新しいバージョンにあることに注意してください。私はあなたがマニフェストにandroid.permission.SYSTEM_ALERT_WINDOW
を持っている場合は、手動でも活性化させることができると信じてAPI> 23 のためのソリューションを発見した7.0
public class IncomingCallActivity extends Activity {
int mCurrentX = 0;
int mCurrentY = 500;
@Override
protected void onCreate(Bundle savedInstanceState) {
final LinearLayout fondo;
TextView text;
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_empty);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final View popupView = layoutInflater.inflate(R.layout.layout_incoming_call, null);
Button button = (Button)popupView.findViewById(R.id.close_window);
text = (TextView) popupView.findViewById(R.id.text);
button.setText("CLOSE WINDOW");
final PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, 300);
new Handler().postDelayed(new Runnable() {
public void run() {
popupWindow.showAtLocation(popupView, Gravity.NO_GRAVITY,mCurrentX,mCurrentY);
popupView.bringToFront();
}
}, 100);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
finish();
}
});
popupView.setOnTouchListener(new View.OnTouchListener() {
int orgX, orgY;
int offsetX, offsetY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
orgX = (int) (mCurrentX - event.getRawX());
orgY = (int) (mCurrentY - event.getRawY());
break;
case MotionEvent.ACTION_MOVE:
mCurrentX = (int) event.getRawX() + orgX;
mCurrentY = (int) event.getRawY() + orgY;
popupWindow.update(mCurrentX, mCurrentY, -1, -1, true);
break;
}
return true;
}
});
String number = getIntent().getStringExtra(
TelephonyManager.EXTRA_INCOMING_NUMBER);
text.setText("Incoming call from " + number);
} catch (Exception e) {
Log.d("Exception", e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
を描くこんにちは、I - >アプリケーション>あなたのアプリケーション> [詳細設定]に行くことによって、ファイルあなたもそれを解決しましたか? – aleksandrbel
最新版ではありません... –
私の答えを確認してください、私はちょうど解決策を見つけました – aleksandrbel