
如何在接听电话上打开带有接听和拒绝按钮的自定义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中的来电所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)