我使用的是com.android.internal.telephony类,它们是Call.java,CallManager.java和Connetion.java。对于这些课程,请单击下面的链接。 Call.java,CallManager.java和Connection.java。我为Call.java和Connection.java创建了子类,如下所示:
Call call = new MyCall();
Connection conn = new MyConnection();
Call.java的子类如下:
public class MyCall extends Call{
CallManager cm = CallManager.getInstance();
MyCall fgCall;
private final ArrayList<Connection> emptyConnections = new ArrayList<Connection>();
@Override
public List<Connection> getConnections() {
fgCall = (MyCall) cm.getActiveFgCall();
System.out.println("**inside getConnections="+fgCall);
if ( fgCall != null) {
return fgCall.getConnections();
}
return emptyConnections;
}
@Override
public Phone getPhone() {
// TODO Auto-generated method stub
return null;
}
@Override
public void hangup() throws CallStateException {
// TODO Auto-generated method stub
}
@Override
public boolean isMultiparty() {
// TODO Auto-generated method stub
return false;
}
public Connection getEarliestConnection() {
List l;
long time = Long.MAX_VALUE;
Connection c;
Connection earliest = null;
l = getConnections();
if (l == null) {
return null;
}else if ( l.size() == 0)
{
return null;
}
for (int i = 0, s = l.size() ; i < s ; i++) {
c = (Connection) l.get(i);
long t;
t = c.getCreateTime();
if (t < time) {
earliest = c;
time = t;
}
}
return earliest;
}
}
我调用CallManager.java如下:
CallManager cm = CallManager.getInstance();
Bcoz这是一个'final'修饰符类,我这样调用。 我的另一个类是CallUpdate.java。在这个类中,我分别调用了Call和Connection类的getEarliestConnection()和DisconnectCause方法。如下:
public Object getCallFailedString(){
myConn = myCall.getEarliestConnection();
System.out.println("myConn is ******"+myConn);
System.out.println("myCall is ******"+myCall);
if(myConn == null){
System.out.println("myConn is null ******");
return null;
}
else {
Connection.DisconnectCause cause = myConn.getDisconnectCause(); System.out.println("myconn is not null ******"+cause);
}
但我得到的连接是空的,即只有部分被执行而不是其他部分。为此,我从CallManger中调用了getActivefgCall,如下所示:
public List<Connection> getConnections() {
fgCall = (MyCall) cm.getActiveFgCall();
System.out.println("**inside getConnections="+fgCall);
if ( fgCall != null) {
return fgCall.getConnections();
}
return emptyConnections;
}
但是我仍然得到FgCall的null值,并且getCallFailedString
方法也是如此。我想要执行getCallFailedString
方法的其他部分。如何解决这个问题对我有帮助。
Thx提前