Java 点击按钮接听或拒绝电话|如何使覆盖层可触摸?

Java 点击按钮接听或拒绝电话|如何使覆盖层可触摸?,java,android-studio,overlay,android-windowmanager,incoming-call,Java,Android Studio,Overlay,Android Windowmanager,Incoming Call,我是Android开发的新手,我正在构建一个来电屏幕,每当我的手机处于响铃状态时,屏幕上就会出现“接听”和“拒绝”按钮以及蓝色背景 到目前为止,我所取得的成就是,每当电话铃响时,我都能得到我的背景按钮! 最近我添加了一个应答按钮,但它似乎不起作用。 每当我按下按钮,后屏幕就会被触动! 请帮助我创建一个可触摸的覆盖。 另外,我使用的接听电话代码不起作用。我尝试了另一种方式。因此,请指导我按按钮接听和拒绝来电,我将感谢您 这是我的广播接收器文件 package com.utaiba.appguruz

我是Android开发的新手,我正在构建一个来电屏幕,每当我的手机处于响铃状态时,屏幕上就会出现“接听”和“拒绝”按钮以及蓝色背景

到目前为止,我所取得的成就是,每当电话铃响时,我都能得到我的背景按钮! 最近我添加了一个应答按钮,但它似乎不起作用。 每当我按下按钮,后屏幕就会被触动! 请帮助我创建一个可触摸的覆盖。 另外,我使用的接听电话代码不起作用。我尝试了另一种方式。因此,请指导我按按钮接听和拒绝来电,我将感谢您

这是我的广播接收器文件

package com.utaiba.appguruz2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class PhoneStateReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
    String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
    Intent i;

    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {

        i = new Intent(context, MyService.class);
        i.putExtra("incomingNumber", incomingNumber);
        context.startService(i);
    }
 }
}
这是我的服务类,出现在呼叫状态

package com.utaiba.appguruz2;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

public class MyService extends Service {

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

private View view;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d("inez","inez onCreate");
    super.onCreate();

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.MATCH_PARENT,
            0,
            0,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            0,
            // WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
            PixelFormat.TRANSPARENT);

    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);

    LayoutInflater inflater = (LayoutInflater) 
this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = inflater.inflate(R.layout.activity_main,null);
    TextView textview = view.findViewById(R.id.text1);
    textview.setText("Someone is calling: " + 
 intent.getStringExtra("incomingNumber"));
    textview.setBackgroundColor(Color.YELLOW);
    Button answerButton = view.findViewById(R.id.pickup);
    answerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent2 = new Intent("android.intent.action.ANSWER");
            intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent2);
        }
    });
            wm.addView(view, params);

    return START_STICKY;
  }

  public void onDestroy() {
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    if (wm != null) {
        wm.removeView(view);

    }
 }

}
此外,当呼叫断开时,覆盖不会消失。这意味着onDestroy()方法没有发挥作用! 那么,如何使覆盖在呼叫断开时消失

这是我的AndroidManifest.XML文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.utaiba.appguruz2">

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ANSWER_PHONE_CALL"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">
    <service
        android:name=".MyService"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.utaiba.appguruz2.MyService" />
        </intent-filter>
     </service>

    <receiver
        android:name=".PhoneStateReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
     </activity>
  </application>

</manifest>

这是activity_main.XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:windowBackground="@android:color/transparent"
android:windowIsTranslucent="true"
android:windowAnimationStyle="@android:style/Animation.Translucent"
android:background="#00AFF0"
android:orientation="vertical">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:layout_gravity="center"
    android:layout_marginTop="200dp"
    android:text="Skype Incoming Call Screen"
    android:textSize="20sp"
    android:id="@+id/text1"/>
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/pickup"
    android:layout_marginTop="20dp"
    android:text="Answer Your Call"
    android:background="#3CD811"/>

</LinearLayout>