Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过自定义活动[按钮]Android挂断和拒绝来电_Java_Android_Broadcastreceiver - Fatal编程技术网

Java 通过自定义活动[按钮]Android挂断和拒绝来电

Java 通过自定义活动[按钮]Android挂断和拒绝来电,java,android,broadcastreceiver,Java,Android,Broadcastreceiver,我只是在学习安卓的过程中,偶然发现了这个问题 我想做一个“自定义来电屏幕”。我当前的解决方案是从BroadcastReceiver扩展的类(IncomingCallInterceptor)。在IncomingCallInterceptor类中,当手机铃声响起时,我用布局覆盖onReceive并启动我的活动(MainActivity) 在该活动(MainActivity)中,我有三个按钮: 接听电话、挂断电话、拒绝接听电话 这些按钮应该按他们说的去做,接听电话,挂断电话或拒绝接听电话 在某种程度上

我只是在学习安卓的过程中,偶然发现了这个问题

我想做一个“自定义来电屏幕”。我当前的解决方案是从BroadcastReceiver扩展的类(IncomingCallInterceptor)。在IncomingCallInterceptor类中,当手机铃声响起时,我用布局覆盖onReceive并启动我的活动(MainActivity)

在该活动(MainActivity)中,我有三个按钮: 接听电话、挂断电话、拒绝接听电话

这些按钮应该按他们说的去做,接听电话,挂断电话或拒绝接听电话

在某种程度上,我接到了接受工作的电话,但没有挂断和拒绝

下面是我的代码:

舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.uppgift.six.one.incoming61.sixone" >

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <receiver android:name="IncomingCallInterceptor">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE"/>
            </intent-filter>
        </receiver>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
        </activity>
    </application>
</manifest>
这是我的活动(布局没有什么可发布的,刚才基本上是三个按钮)

在MainActivity类中,它由注释标记,我需要一些帮助。 我也看过一些关于“Telephonyservice interface”(thingy)解决方案的内容,但我不明白在测试时它是如何工作的。

拒绝呼叫:

 try {

                TelephonyManager tm = (TelephonyManager)
                        getSystemService(Context.TELEPHONY_SERVICE);
                try {
                    Class c = Class.forName(tm.getClass().getName());
                    Method m = c.getDeclaredMethod("getITelephony");
                    m.setAccessible(true);
                    Object telephonyService = m.invoke(tm); // Get the internal ITelephony object
                    c = Class.forName(telephonyService.getClass().getName()); // Get its class
                    m = c.getDeclaredMethod("endCall"); // Get the "endCall()" method
                    m.setAccessible(true); // Make it accessible
                    m.invoke(telephonyService); // invoke endCall()

                } catch (Exception e) {
                    e.printStackTrace();
                }


            } catch (Exception e) {

            }
        }
public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnAnswer = (Button)findViewById(R.id.btnAnswer);
        Button btnDecline= (Button)findViewById(R.id.btnDecline);
        Button btnHangUp= (Button)findViewById(R.id.btnHangUp);

        btnAnswer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON);
                i.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
                        KeyEvent.KEYCODE_HEADSETHOOK));
                sendOrderedBroadcast(i, null);
            }
        });

        btnDecline.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Decline Call (I need help here)
            }
        });

        btnHangUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Hang Up Call (I need help here)
            }
        });
    }
 try {

                TelephonyManager tm = (TelephonyManager)
                        getSystemService(Context.TELEPHONY_SERVICE);
                try {
                    Class c = Class.forName(tm.getClass().getName());
                    Method m = c.getDeclaredMethod("getITelephony");
                    m.setAccessible(true);
                    Object telephonyService = m.invoke(tm); // Get the internal ITelephony object
                    c = Class.forName(telephonyService.getClass().getName()); // Get its class
                    m = c.getDeclaredMethod("endCall"); // Get the "endCall()" method
                    m.setAccessible(true); // Make it accessible
                    m.invoke(telephonyService); // invoke endCall()

                } catch (Exception e) {
                    e.printStackTrace();
                }


            } catch (Exception e) {

            }
        }