收录日期:2019/12/09 07:40:57 时间:2016/08/27 23:17:08 标签:Android
android 自动接听  我用网上的代码如下:
[code]

synchronized void autoAnswerCall(){
 
  Context context = TApplication.nowApplication;
 
   try
 
         {
 
          //插耳机
 
             Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
 
             localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
 
             localIntent1.putExtra("state", 1);
 
             localIntent1.putExtra("microphone", 1);
 
             localIntent1.putExtra("name", "Headset");
 
             context.sendOrderedBroadcast(localIntent1, "android.permission.CALL_PRIVILEGED");
 
             
             //按下耳机按钮
 
             Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
 
             KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK);
 
             localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
 
             context.sendOrderedBroadcast(localIntent2, "android.permission.CALL_PRIVILEGED");
 
             
             //放开耳机按钮
 
             Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
 
             KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
 
             localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
 
             context.sendOrderedBroadcast(localIntent3, "android.permission.CALL_PRIVILEGED");
 
             
             //拔出耳机
 
             Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
 
             localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
 
             localIntent4.putExtra("state", 0);
 
             localIntent4.putExtra("microphone", 1);
 
             localIntent4.putExtra("name", "Headset");
 
             context.sendOrderedBroadcast(localIntent4, "android.permission.CALL_PRIVILEGED");
 
         }catch (Exception e){
 
             e.printStackTrace();
 
         }
 
}
[/code]
实现了在模拟机和真机的android2.3系统上的自动接听功能,在模拟机上android4.0系统的也可以,但是在真机android4.0上就不行了(三星19300 4.1系统 和 小米 4.0系统 都不行),
 求高手指教如何在真机4.0上实现自动接听功能呀??????(用aidl反射是不行的)
你可以使用Telephony manager来接听电话,因此你应该在Broadcast receiver添加以下代码:
 if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
        {          
            TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);  
            Class c = null;
                 c = Class.forName(telephony.getClass().getName());
                 Method m = null;
                 m = c.getDeclaredMethod("getITelephony");
                 m.setAccessible(true);              
                telephonyService = (ITelephony) m.invoke(telephony);
                telephonyService.answerRingingCall();

       }





 
@csdn_ask
这个方法不行呀,在4.0上会报权限错误
是啊,普通应用程序没权限接电话的,只有挂电话的权限。否则随便一个应用就能搞到你手机通信功能崩溃了。
帖子不要沉呀,即使实现不了,有权威说法吗, 技术大牛们????等待回复中
无解呀!android 手机就是这么变态 你换个手机 试试 说不定又好了 debug代码仔细看看吧 !只能这样了
这个方法不行呀,在4.0上会报权限错误
引用 6 楼 taste998 的回复:
这个方法不行呀,在4.0上会报权限错误

你说的是反射那个方法还是我上面代码的方法????你在什么机子上测试的???
帖子不要沉呀,有知道的朋友吗,给个权威的说法????急急急。。。。
我也遇到了这种问题
同求 在部分手机上是可以的 在htc上又不行  擦 
引用 2 楼 liubaoxinggo 的回复:
@csdn_ask
这个方法不行呀,在4.0上会报权限错误



你在manifest文件中添加下面的权限了吗?
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" /> 
这些权限都已经加上了

引用 11 楼 CSDN_Ask 的回复:
引用 2 楼 liubaoxinggo 的回复:
@csdn_ask
这个方法不行呀,在4.0上会报权限错误


你在manifest文件中添加下面的权限了吗?
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.pe……
帖子不要沉呀,求助。。。。。
和你寻求同样的问你,帮顶
顶!!求解!遇到同样问题,也是4.0好使,4.1就不行!不知道4.1到底在监听多媒体按键时,咋操作的。
没找到源码。。
希望高手指点!
也在痛苦中, 求解啊!!
不要考虑了,谷歌开始限制底层危险api了。
引用 17 楼 DrSmart 的回复:
不要考虑了,谷歌开始限制底层危险api了。
那要是root以后呢,可以办到吗?
LZ 有实现这个功能呢 在4.1的机子上,你说的那个方法在4.1上有个权限被弄到系统应用权限了。是不是只有内置到rom下了?
引用 19 楼 liyanglyw 的回复:
LZ 有实现这个功能呢 在4.1的机子上,你说的那个方法在4.1上有个权限被弄到系统应用权限了。是不是只有内置到rom下了?
没有呢,一直郁闷中
自动接听电话需要android:sharedUserId="android.uid.system"
并且需要当前系统的签名,如果是想做通用的是不可能的。这一块没有权限。
我觉得如果想实现的话,那就弄到底层去啦,自己去开发个系统,自己做API
我是小白,别问我,我什么都不知道
问题解决了,谢谢大家的帮助关心
引用 23 楼 liubaoxinggo 的回复:
问题解决了,谢谢大家的帮助关心
怎么解决的,分享一下撒
做这个功能之前,楼主必须得先报告你这么做的目的是什么。
我在琢磨通过广播记录电话时长,4.0版本有限制,郁闷。
这个需要较高的权限。好像光在Manifest文件中声明是不够的。
必须获取root权限,或者直接把程序安装到系统目录下即可。
各位同胞们,都研究的怎么样啦?我也开始步你们的后尘了,一路的纠结啊,求解。。。。。
这类高危操作,从android4.0开始会逐渐不灵的,4.2更严格
sharedUserId="android.uid.system" + 必须获取root权限
同问哪,进来看看
引用 23 楼 liubaoxinggo 的回复:
问题解决了,谢谢大家的帮助关心

LZ不厚道啊,问题解决了也不说下咋解决的
真是不厚道啊.楼主
该回复于2013-05-19 09:27:02被管理员删除
引用 32 楼 majaw 的回复:
Quote: 引用 23 楼 liubaoxinggo 的回复:

问题解决了,谢谢大家的帮助关心

LZ不厚道啊,问题解决了也不说下咋解决的

这是不好意思哦,这段时间一直在忙,忙的晕头转向的,忘记贴出来了
代码如下:
/**
 * 该方法可以用于4.1的接听
 */
public void autoAnswerPhone() { 
try {
ITelephony itelephony = getITelephony(mTelephonyManager);
//itelephony.silenceRinger(); 
itelephony.answerRingingCall(); 
} catch (Exception e) {
e.printStackTrace();
try {
Intent intent = new Intent("android.intent.action.MEDIA_BUTTON");
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

intent = new Intent("android.intent.action.MEDIA_BUTTON");
keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent1.putExtra("state", 1);
localIntent1.putExtra("microphone", 1);
localIntent1.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent1,"android.permission.CALL_PRIVILEGED");

Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
TApplication.nowApplication.sendOrderedBroadcast(localIntent2,"android.permission.CALL_PRIVILEGED");

Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
TApplication.nowApplication.sendOrderedBroadcast(localIntent3,"android.permission.CALL_PRIVILEGED");

Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent4.putExtra("state", 0);
localIntent4.putExtra("microphone", 1);
localIntent4.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent4,"android.permission.CALL_PRIVILEGED");
} catch (Exception e2) {
e2.printStackTrace();
Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
}
}
}
最近一段时间忙的晕头转向的,忘记吧解决的方法贴出来了,大牛们们给瞧瞧看看,是否可以改进

       /**
 * 该方法可以用于4.1的接听
 */
public void autoAnswerPhone() { 
try {
ITelephony itelephony = getITelephony(mTelephonyManager);
//itelephony.silenceRinger(); 
itelephony.answerRingingCall(); 
} catch (Exception e) {
e.printStackTrace();
try {
Intent intent = new Intent("android.intent.action.MEDIA_BUTTON");
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

intent = new Intent("android.intent.action.MEDIA_BUTTON");
keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent1.putExtra("state", 1);
localIntent1.putExtra("microphone", 1);
localIntent1.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent1,"android.permission.CALL_PRIVILEGED");

Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
TApplication.nowApplication.sendOrderedBroadcast(localIntent2,"android.permission.CALL_PRIVILEGED");

Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
TApplication.nowApplication.sendOrderedBroadcast(localIntent3,"android.permission.CALL_PRIVILEGED");

Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent4.putExtra("state", 0);
localIntent4.putExtra("microphone", 1);
localIntent4.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent4,"android.permission.CALL_PRIVILEGED");
} catch (Exception e2) {
e2.printStackTrace();
Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
}
}
}
有机会试试,不知道是否还需要系统签名了
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
这一句,我怎么出错啊问题在:TApplication.nowApplication
能不能把你的工程源码发一下啊,我的QQ:286606889
引用 38 楼 tufeng2000 的回复:
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
这一句,我怎么出错啊问题在:TApplication.nowApplication

这是一个Context对象,你换成其他的就可以了
请问下楼主,你做的挂断电话反射的方法 在小米上也行么 我怎么endCall在小米上不行啊 提示说 call_phone这个权限访问不到
引用 41 楼 liyanglyw 的回复:
请问下楼主,你做的挂断电话反射的方法 在小米上也行么 我怎么endCall在小米上不行啊 提示说 call_phone这个权限访问不到
这个我没有试,只是在小米上4.x系统上获取不了来电号码,比较郁闷,小米自己改的系统太叫人郁闷了
请问这个方法是通用的吗?
是不是只用这一个方法就接起了所有电话??

引用 36 楼 liubaoxinggo 的回复:
最近一段时间忙的晕头转向的,忘记吧解决的方法贴出来了,大牛们们给瞧瞧看看,是否可以改进

       /**
 * 该方法可以用于4.1的接听
 */
public void autoAnswerPhone() { 
try {
ITelephony itelephony = getITelephony(mTelephonyManager);
//itelephony.silenceRinger(); 
itelephony.answerRingingCall(); 
} catch (Exception e) {
e.printStackTrace();
try {
Intent intent = new Intent("android.intent.action.MEDIA_BUTTON");
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

intent = new Intent("android.intent.action.MEDIA_BUTTON");
keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent1.putExtra("state", 1);
localIntent1.putExtra("microphone", 1);
localIntent1.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent1,"android.permission.CALL_PRIVILEGED");

Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
TApplication.nowApplication.sendOrderedBroadcast(localIntent2,"android.permission.CALL_PRIVILEGED");

Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
TApplication.nowApplication.sendOrderedBroadcast(localIntent3,"android.permission.CALL_PRIVILEGED");

Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent4.putExtra("state", 0);
localIntent4.putExtra("microphone", 1);
localIntent4.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent4,"android.permission.CALL_PRIVILEGED");
} catch (Exception e2) {
e2.printStackTrace();
Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
}
}
}
引用 36 楼 liubaoxinggo 的回复:
最近一段时间忙的晕头转向的,忘记吧解决的方法贴出来了,大牛们们给瞧瞧看看,是否可以改进

       /**
 * 该方法可以用于4.1的接听
 */
public void autoAnswerPhone() { 
try {
ITelephony itelephony = getITelephony(mTelephonyManager);
//itelephony.silenceRinger(); 
itelephony.answerRingingCall(); 
} catch (Exception e) {
e.printStackTrace();
try {
Intent intent = new Intent("android.intent.action.MEDIA_BUTTON");
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

intent = new Intent("android.intent.action.MEDIA_BUTTON");
keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent1.putExtra("state", 1);
localIntent1.putExtra("microphone", 1);
localIntent1.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent1,"android.permission.CALL_PRIVILEGED");

Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
TApplication.nowApplication.sendOrderedBroadcast(localIntent2,"android.permission.CALL_PRIVILEGED");

Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
TApplication.nowApplication.sendOrderedBroadcast(localIntent3,"android.permission.CALL_PRIVILEGED");

Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent4.putExtra("state", 0);
localIntent4.putExtra("microphone", 1);
localIntent4.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent4,"android.permission.CALL_PRIVILEGED");
} catch (Exception e2) {
e2.printStackTrace();
Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
}
}
}


我在三星手机上测试,4.1.2系统,还是接不起电话啊。
引用 44 楼 star9511 的回复:
Quote: 引用 36 楼 liubaoxinggo 的回复:

最近一段时间忙的晕头转向的,忘记吧解决的方法贴出来了,大牛们们给瞧瞧看看,是否可以改进

       /**
 * 该方法可以用于4.1的接听
 */
public void autoAnswerPhone() { 
try {
ITelephony itelephony = getITelephony(mTelephonyManager);
//itelephony.silenceRinger(); 
itelephony.answerRingingCall(); 
} catch (Exception e) {
e.printStackTrace();
try {
Intent intent = new Intent("android.intent.action.MEDIA_BUTTON");
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

intent = new Intent("android.intent.action.MEDIA_BUTTON");
keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);
intent.putExtra("android.intent.extra.KEY_EVENT",keyEvent);
TApplication.nowApplication.sendOrderedBroadcast(intent,"android.permission.CALL_PRIVILEGED");

Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent1.putExtra("state", 1);
localIntent1.putExtra("microphone", 1);
localIntent1.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent1,"android.permission.CALL_PRIVILEGED");

Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
TApplication.nowApplication.sendOrderedBroadcast(localIntent2,"android.permission.CALL_PRIVILEGED");

Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_HEADSETHOOK);
localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
TApplication.nowApplication.sendOrderedBroadcast(localIntent3,"android.permission.CALL_PRIVILEGED");

Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent4.putExtra("state", 0);
localIntent4.putExtra("microphone", 1);
localIntent4.putExtra("name", "Headset");
TApplication.nowApplication.sendOrderedBroadcast(localIntent4,"android.permission.CALL_PRIVILEGED");
} catch (Exception e2) {
e2.printStackTrace();
Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
}
}
}


我在三星手机上测试,4.1.2系统,还是接不起电话啊。
你那是三星什么手机?是三星原来的4.12系统吗?我在note2 4.12上可以
我是三星i9300,刷机成4.12,我又测了一下,好像会被lbe拦截,关掉后就可以了,不过在索尼的4.12上还是不行,有时候还会变成直接挂断电话,那是怎么回事?
引用 46 楼 star9511 的回复:
我是三星i9300,刷机成4.12,我又测了一下,好像会被lbe拦截,关掉后就可以了,不过在索尼的4.12上还是不行,有时候还会变成直接挂断电话,那是怎么回事?
我没在索尼上试过,也不知道怎么回事。你可以debug一下试试,看看执行到哪里,挂掉的?当然这也可能跟系统有关系
挂掉是因为前面拦截异常造成的 有很多手机上都会出现偶尔接听会挂断的情况  所以可以直接使用
              Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
                KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
                meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
                TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
就可以了,前面的不需要。
引用 48 楼 liyanglyw 的回复:
挂掉是因为前面拦截异常造成的 有很多手机上都会出现偶尔接听会挂断的情况  所以可以直接使用
              Intent meidaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);  
                KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK);  
                meidaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT,keyEvent);  
                TApplication.nowApplication.sendOrderedBroadcast(meidaButtonIntent, null);
就可以了,前面的不需要。

前面的不需要是指哪里前面不需要?我这也出现了偶尔会挂断的情况
LZ您好 我是android 小白 请问ITelephony itelephony = getITelephony(mTelephonyManager) 中的mTelephonyManager 是什么参数?然后这个函数的功能是手机接到来电的时候不需划屏就可以直接接电话么?(就是电话一来不需要什么操作 直接就通话了)

高手请进,一个很急的问题。 请教:能不能同时操作两个BMP图? 如何在一文档中使用LotusScript加入其它文档的链接?(急,在线等候!) 提供全套医院管理源程序,请去下载 学VB好,还是学DELPHI好啊?大家给点意见啊。 高手请进,一个很急的问题。 关于几个函数其参数的解释是什末和函数的功能????大家来看看!!谢谢 真的没人能解决这个问题吗? 问了N次,回复0次. 真绝望哪! 有一个2列的Datagrid, 我想click某行即进入编辑状态, 有高手指点说每一列都做成L 用RequiredFieldValidator控件进行有效性验证。总显示WebUIValidation.js不存在?怎么办? 程序中如何得到一个对象的虚函数表(_vfptr)? 这可是一个高深问题 服务器端脚本与客户端脚本的区别 关于内联函数 我是怎么死的?? 简单问题,无穷困扰 JBuilder5为什么老是编译同一个文件? 请问!!如何吧execl的数据导入到sqlserver里面?? 一直用β2的中文vs.net,今天叨咕到了正版的e文版的vs.net,请问能直接升级么??3x 问题 这可是一个高深问题 NO MDI from are currently ative 虚拟漫游系统sos!!! 问题1 可能晚上来不了了,提点建议先 数据库程序的问题!!!麻烦大家进来看看! capboy 老兄请进来,关于DirectShow应用程序的设置 一直用β2的中文vs.net,今天叨咕到了正版的e文版的vs.net能直接升级么??3x 一直用β2的中文vs.net,今天叨咕到了正版的e文版的vs.net能直接升级么??3x 怪事,为什么在vb的论坛里只能显示9:40以前的帖子啊??别的论坛都好好的?? 我想买一台二手电脑,