android - 如何以编程方式接收来电?

时间:2015-06-03 09:22:27

标签: android android-activity telephony telephonymanager phone-state-listener

我希望通过我的应用程序以编程方式接收来电。

我尝试了一些代码,但它没有用。

以下是我的结束电话代码。

TelephonyManager tm = (TelephonyManager) ctx
            .getSystemService(Context.TELEPHONY_SERVICE);

    try {
        if (tm == null) {
            // this will be easier for debugging later on
            throw new NullPointerException("tm == null");
        }


        tm.getClass().getMethod("endCall").invoke(tm);//answerRingingCall

    } catch (Exception e) {
        Log.e("sdsd", "Unable to use the Telephony Manager directly.", e);
    }


}

使用此代码,我可以结束任何来电,但是当我将“endCall”更改为“answerRingingCall”时。我的应用程序没有接到来电,请你帮忙解决这个问题。

关于权限我无法在应用上应用此权限。

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

请参阅附加屏幕截图。

enter image description here

显示权限仅授予系统应用。如何解决这个问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助

private static Dictionary<Type, String> s_Search = new Dictionary<Type, String>()
{
    {typeof(MyTypeA), "optiona"},
    {typeof(MyTypeB), "optionb"}
}

...

public XDocument DoSearch<T>()
{ 
    return searchService.Search(dictionary[s_Search(typeof(T))]);
}