我知道这已经被问过很多次了,没有答案,但我仍然希望有人终于解决了这个问题.
问题:我有一个运行Android 2.3的非root设备.我需要创建一个服务:
像许多其他人一样,我已经陷入了#2.以下是有史以来建议的解决方案的摘要:
com.android.internal.telephony.CallManager及其方法registerForPreciseCallStateChanged(例如,这一个):不起作用,没有电话在其中注册,因此事件不会触发.com.android.internal.telephony.PhoneFactory获得com.android.internal.telephony.Phone实例(这是一切的关键):不工作,工厂没有被初始化; 尝试makeDefaultPhones使用安全异常中的调用结果初始化它(如此处).看起来已经尝试了所有东西,但仍然可能还有一个技巧可以拯救我:)
我也在尝试解决这个问题,但还没有找到任何解决方案。
查看Android源代码我在〜/kitchen/jellybean/frameworks/opt/telephony/src/java/com/android/internal/telephony/Call.java中找到了这些行
public enum State {
IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING;
public boolean isAlive() {
return !(this == IDLE || this == DISCONNECTED || this == DISCONNECTING);
}
public boolean isRinging() {
return this == INCOMING || this == WAITING;
}
public boolean isDialing() {
return this == DIALING || this == ALERTING;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为人们可以通过检查 ACTIVE 状态来知道拨出电话是否已应答,但我不知道如何从应用程序中读取此值,也许可以通过为此添加特定函数来修改框架,例如:
public boolean isActive() {
return this == ACTIVE;
}
Run Code Online (Sandbox Code Playgroud)
这只是一个想法,但我不确定如何实现它,因为显然必须进行其他修改才能从应用程序层访问这个新功能。
如果您发现这可行或知道如何去做,我们将非常感谢您提供帮助和反馈。
| 归档时间: |
|
| 查看次数: |
5325 次 |
| 最近记录: |