В моем коде я получаю значение Call null. то есть я использую три внутренних API, они Call.javaПолучение значения вызова null
http://hi-android.info/src/com/android/internal/telephony/Call.java.html
CallManger.java
http://hi-android.info/src/com/android/internal/telephony/CallManager.java.html и
Connection.java
http://hi-android.info/src/com/android/internal/telephony/Connection.java.html.
Я создал подкласс для класса Call и connection.
public class MyCall extends Call{
CallManager cm = CallManager.getInstance();
Phone.State state;
Connection c;
Phone mDefaultPhone;
private final ArrayList<Connection> emptyConnections = new ArrayList<Connection>();
Call ringingCall;
@Override
public List<Connection> getConnections() {
System.out.println("before if****"+ringingCall);
if(ringingCall != null){
System.out.println("inside if****");
ringingCall = (Call) cm.getForegroundCalls();
System.out.println("**call is not null***");
System.out.println("value of call"+ringingCall);
return ((Call) ringingCall).getConnections();
}
else
{
System.out.println("**list is null***");
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() {
System.out.println("inside EarliestConnection");
List l;
long time = Long.MAX_VALUE;
Connection c;
Connection earliest = null;
l = getConnections();
System.out.println("value of connection is=="+l);
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;
}
}
Я назвал CallManger так:
CallManager cm = CallManager.getInstance();
Мой другой класс CallUpdate. Он должен дать мне OutgoingCall States (например, состояние другого конечного телефона занято, отключено или недоступно).
public class CallUpdate {
Call myCall = new MyCall();
Connection myConn = new MyConnection();
CallManager cm = CallManager.getInstance();
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);
switch(cause){
case BUSY :
System.out.println("inside busy");
break;
case NUMBER_UNREACHABLE :
System.out.println("inside un-reachable");
break;
case POWER_OFF :
System.out.println("inside power off");
break;
}
}
return myConn;
}
}
Но я получаю значение Call в NULL в вышеуказанном методе Call.java.
Вызов ringingCall
public List<Connection> getConnections() {
System.out.println("before if****"+ringingCall);
if(ringingCall != null){
System.out.println("inside if****");
ringingCall = (Call) cm.getForegroundCalls();
System.out.println("**call is not null***");
System.out.println("value of call"+ringingCall);
return ((Call) ringingCall).getConnections();
}
else
{
System.out.println("**list is null***");
return emptyConnections;
}
}
Значения rigingCall равна нулю. Почему это значение равно null? Я делаю правильно?. plz help me
Thx заранее.
@Vanathi: Могу ли я ответить на мой вопрос? Я иду правильно? – shiv1229
Извините, я понятия не имею об Android. Но вы можете попробовать «Call ringingCall = new Call();» вместо «Call ringingCall = null;», как ответил Брайан. – Vaandu
@ shiv1229 - прочитав все вопросы, которые вы задали об этом, похоже, вы участвуете в форме программирования культовых грузов. Не понимая, что именно вы печатаете, возможность создания рабочего кода в лучшем случае будет случайной удачей. Я бы предложил книгу хорошего новичка по Java или учебники по Java Java по крайней мере. –