中断Android中的来电

中断Android中的来电,第1张

概述如何在接听电话上打开带有接听和拒绝按钮的自定义UI,我想显示自定义UI而不是默认拨号程序.我正在使用以下代码,但拨号器已打开,我的活动未打开:<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apkes/android"package="com.exam

如何在接听电话上打开带有接听和拒绝按钮的自定义UI,我想显示自定义UI而不是默认拨号程序.
我正在使用以下代码,但拨号器已打开,我的活动未打开:

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"package="com.example.callintruptdemo"androID:versionCode="1"androID:versionname="1.0" ><uses-sdk    androID:minSdkVersion="10"    androID:targetSdkVersion="17" /><uses-permission androID:name="androID.permission.READ_PHONE_STATE"/><application    androID:allowBackup="true"    androID:icon="@drawable/ic_launcher"    androID:label="@string/app_name"    androID:theme="@style/Apptheme" >    <activity        androID:name=".MainActivity"        androID:label="@string/app_name" >        <intent-filter>            <action androID:name="androID.intent.action.MAIN" />            <category androID:name="androID.intent.category.LAUNCHER" />        </intent-filter>    </activity>    <activity androID:name=".IncomingCall"></activity>    <receiver androID:name=".callreceiver">        <intent-filter >            <action androID:name="androID.intent.action.PHONE_STATE"></action>        </intent-filter>    </receiver></application>

我有一个广播接收器,它监听来话,接收器中是:

@OverrIDepublic voID onReceive(Context context, Intent intent) {       Log.d("callreceiver","IncomingbroadcastReceiver: onReceive: ");        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);        Log.d("callreceiver","IncomingbroadcastReceiver: onReceive: " + state);        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))        {            Intent i = new Intent(context, IncomingCall.class);            i.putExtras(intent);            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(i);        }}

IncomingCall类的代码是:

@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    super.onCreate(savedInstanceState);    getwindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_touchABLE);    getwindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_touch_MODAL);    setContentVIEw(R.layout.activity_main);    String number = getIntent().getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);    TextVIEw text = (TextVIEw)findVIEwByID(R.ID.text);    text.setText("Incoming call from " + number);}

但未显示我的自定义UI.

我还需要UI上的按钮以及如何通过单击该按钮来接听来电.
提前致谢.

编辑: –
更新代码后,我可以打开我的自定义UI,现在我想通过单击按钮来接听电话.如何做到这一点有帮助.

解决方法:

首先执行以下 *** 作:

try {        Thread.sleep(1000);    } catch (InterruptedException e) {        // Todo auto-generated catch block        e.printstacktrace();    }

然后在调用您的活动之前调用abortbroadcast()方法,并确保将优先级放在intentFilter中,如下所示:

 <intent-filter androID:priority="99999" >            <action androID:name="androID.intent.action.PHONE_STATE" />  </intent-filter>

并通过自定义UI接听来电,请执行以下 *** 作:

answerbutton = (button) findVIEwByID(R.ID.pickup);    answerbutton.setonClickListener(new OnClickListener() {        public voID onClick(final VIEw v) {            Intent answer = new Intent(Intent.ACTION_MEDIA_button);            answer.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,   KeyEvent.KEYCODE_headSETHOOK));     context.sendOrderedbroadcast(answer, null);        }    });

并拒绝呼叫,请执行以下 *** 作:

rejectbutton= (button) findVIEwByID(R.ID.pickup);    rejectbutton= .setonClickListener(new OnClickListener() {        public voID onClick(final VIEw v) {            Intent buttonDown = new Intent(Intent.ACTION_MEDIA_button);    buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_headSETHOOK));    getApplicationContext().sendOrderedbroadcast(buttonDown, "androID.permission.CALL_PRIVILEGED");    }});

希望能有所帮助

总结

以上是内存溢出为你收集整理的中断Android中的来电全部内容,希望文章能够帮你解决中断Android中的来电所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1077376.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存