51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> app >> 文章正文

Neither user 10088 nor current process has android.permission.MODIFY_PHONE_STATE

更新时间:2013-7-24:  来源:51代码网

Neither user 10088 nor current process has android.permission.MODIFY_PHONE_STATE

在自定义接听按钮时报错,错误信息:
java.lang.SecurityException: Neither user 10088 nor current process has android.permission.MODIFY_PHONE_STATE.

AndroidManifest.xml中有相应的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />

接听电话时出错。我用的测试机是三星i9001, 2.3.6的系统

在网上查了些资料,有的说是因为系统没有root过,没有系统权限所致,但我在htc g7(未root过)上测试是可以的,不会报这个错误。

哪位大侠知道是怎么回事,麻烦告知,谢谢!
应该是android版本问题,android在2.3之后将这一权限给封闭了,应用层已经无法访问这一权限;
你可以试一下,在版本1.5上面是可行的,不过版本2.3且之后就已经不能使用了,希望对你有用。

2.3以后就不能用反射的方法来接听电话。我今天找了一个方法在2.3及2.3以后的版本上可以使用,发布这个方法的人说只适用于2.3及2.3以上的版本,不过我在2.2版本上测了一下,也是可以用的。

代码如下:

public synchronized void answerRingingCall()
{//据说该方法只能用于Android2.3及2.3以上的版本上,但本人在2.2上测试可以使用
    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();
    }
}

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |