android5.0 接听电话实现

时间:2021-05-17 18:51:44
报个中权限错误.以前可以通过模拟耳机插拔,按键来实现接听电话,现在不行了.求高手解决.
下面是以前的方法:
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);
     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);
     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");
     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);
     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);
     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");
     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);  
                sendOrderedBroadcast(meidaButtonIntent, null);
     }
     }

7 个解决方案

#1


该回复于2015-03-29 16:32:16被管理员删除

#2


顶一下!!楼主,我也遇到同样的问题,请问你解决了吗?

#3


try {
            Runtime.getRuntime().exec("input keyevent " +
                    Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
        } catch (IOException e) {
            // Runtime.exec(String) had an I/O problem, try to fall back
            String enforcedPerm = "android.permission.CALL_PRIVILEGED";
            Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN,
                            KeyEvent.KEYCODE_HEADSETHOOK));
            Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
                            KeyEvent.KEYCODE_HEADSETHOOK));

            mContext.sendOrderedBroadcast(btnDown, enforcedPerm);
            mContext.sendOrderedBroadcast(btnUp, enforcedPerm);
        }

网上给的代码,不知的可以不?楼主后是怎样实现的。

#4


正解!!!!
try {
            Runtime.getRuntime().exec("input keyevent " +
                    Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
        } catch (IOException e) {
            // Runtime.exec(String) had an I/O problem, try to fall back
            String enforcedPerm = "android.permission.CALL_PRIVILEGED";
            Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN,
                            KeyEvent.KEYCODE_HEADSETHOOK));
            Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
                            KeyEvent.KEYCODE_HEADSETHOOK));
 
            mContext.sendOrderedBroadcast(btnDown, enforcedPerm);
            mContext.sendOrderedBroadcast(btnUp, enforcedPerm);
        }

#5


为什么我按照这个来写实现不了啊

#6


一年多过去了,楼主难道还没有解决这个问题吗?解决的话怎么不解答一下呢?

#7


5.0之后直接写应用程序是做不到的了,因为安全的考虑,从系统上做了限制。可以考虑做成系统应用。

#1


该回复于2015-03-29 16:32:16被管理员删除

#2


顶一下!!楼主,我也遇到同样的问题,请问你解决了吗?

#3


try {
            Runtime.getRuntime().exec("input keyevent " +
                    Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
        } catch (IOException e) {
            // Runtime.exec(String) had an I/O problem, try to fall back
            String enforcedPerm = "android.permission.CALL_PRIVILEGED";
            Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN,
                            KeyEvent.KEYCODE_HEADSETHOOK));
            Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
                            KeyEvent.KEYCODE_HEADSETHOOK));

            mContext.sendOrderedBroadcast(btnDown, enforcedPerm);
            mContext.sendOrderedBroadcast(btnUp, enforcedPerm);
        }

网上给的代码,不知的可以不?楼主后是怎样实现的。

#4


正解!!!!
try {
            Runtime.getRuntime().exec("input keyevent " +
                    Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
        } catch (IOException e) {
            // Runtime.exec(String) had an I/O problem, try to fall back
            String enforcedPerm = "android.permission.CALL_PRIVILEGED";
            Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN,
                            KeyEvent.KEYCODE_HEADSETHOOK));
            Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
                    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
                            KeyEvent.KEYCODE_HEADSETHOOK));
 
            mContext.sendOrderedBroadcast(btnDown, enforcedPerm);
            mContext.sendOrderedBroadcast(btnUp, enforcedPerm);
        }

#5


为什么我按照这个来写实现不了啊

#6


一年多过去了,楼主难道还没有解决这个问题吗?解决的话怎么不解答一下呢?

#7


5.0之后直接写应用程序是做不到的了,因为安全的考虑,从系统上做了限制。可以考虑做成系统应用。