2012-01-05 14 views
0

私はcom.android.internal.telephony APIを使用しています。その中で私は2つの抽象クラスを呼び出しました。それらはCall.javaとConnection.javaです。あなたがここにnull値を取得する

Call myCall = new MyCall(); 
Connection myConn = new MyConnection(); 

のように、これらの作成したサブクラスのhttp://hi-android.info/src/com/android/internal/telephony/Call.java.htmlhttp://hi-android.info/src/com/android/internal/telephony/Connection.java.htmlをこれらのクラスを見つけることができます私はこのように使用し、抽象メソッドで接続クラスからgetDisconnectCauseメソッドを使用する必要があります。

myConn = myCall.getEarliestConnection();        
     if(myConn == null){ 
     System.out.println("myConn is null ******"); 
     }else 
      { 
      Connection.DisconnectCause cause = myConn.getDisconnectCause();      
       System.out.println("value of cause ******"+cause); 
      } 

サブクラスCall.javaは次のとおりです。

1.  CallManager cm = CallManager.getInstance(); 
2.  Phone.State state; 
3.  
4.  public List<Connection> getConnections() {  
5.   state = cm.getState();  
6.   ringingCall = cm.getForegroundCalls();  
7.   System.out.println("**inside getConnections="+state);  
8.   System.out.println("**inside getConnections="+ringingCall); 
9.   if (ringingCall == null) { 
10.    System.out.println("**call is null***"); 
11.    return emptyConnections; 
12.   } 
13.   else 
14.   { 
15.    System.out.println("**call is not null***"); 
16.     return ((Call) ringingCall).getConnections();  
17.   } 
18.     @Override 
19.     public Phone getPhone() { 
20.      return null; 
        } 
        @Override 
        public void hangup() throws CallStateException { 

          } 

        @Override 
        public boolean isMultiparty() { 
        return false; 
        }   
        public Connection 
         getEarliestConnection() { 
          List l; 
           long time = Long.MAX_VALUE; 
           Connection c; 
           Connection earliest = null; 

    68.      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; 
          } 

         } 

AND the Connection.java subclass is: 


    class MyConnection extends Connection{ 

      @Override 
      public void cancelPostDial() { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public String getAddress() { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public Call getCall() { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public long getConnectTime() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public long getCreateTime() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public DisconnectCause getDisconnectCause() { 
       // TODO Auto-generated method stub 


       return null; 
      } 

      @Override 
      public long getDisconnectTime() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public long getDurationMillis() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public long getHoldDurationMillis() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public int getNumberPresentation() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public PostDialState getPostDialState() { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public String getRemainingPostDialString() { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public UUSInfo getUUSInfo() { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public void hangup() throws CallStateException { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public boolean isIncoming() { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      @Override 
      public void proceedAfterWaitChar() { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void proceedAfterWildChar(String arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void separate() throws CallStateException { 
       // TODO Auto-generated method stub 

      } 


     } 

EDIT 2 : I have edited line number 1 to 17. Plz check this. I am getting java.lang.ClassCastException: java.util.Collections error on Line No: 16 and Line No:68.は、誰もがこれを解決するために私を助けることができます。また、コールがヌルではないにもかかわらず、常にIDLEという1つのコール状態しか得られません。私は他の部分の中に入っています。 plzは私を助けます。

答えて

1
@Override 
public List<Connection> getConnections() { 
    return null; 
} 

あなたMyCallクラスのこのメソッドはnullを返し、getConnections()戻りnull場合MyCall.getEarliestConnection();のためのあなたのコードではnullを返します。

+0

次に何をすればよいですか? getConnectionsメソッドの実装方法plzは私を助けます。 Thx事前に – shiv1229

+0

私はあなたがGoogleで見てみる自分自身を作成し​​ようとする代わりに使用できる接続と呼び出しの実装があると思う – James

+0

あなたが探しているものを保持するかもしれない 'com.android.internal.telephony.CallManager' 。 – James

1

getConnections()メソッドの実装ではnullが返されます。

getEarliestConnection()のコードからわかるように、getConnections()がnullを返した場合、getEarliestConnection()もnullを返します。ここで

は、関連するコードです:

@Override 
public List<Connection> getConnections() { 
    return null; 
} 

...

l = getConnections(); 
if (l == null) { 
return null; 
} 
+0

あなたの返事のためのThx。 getConnectionsメソッド – shiv1229

+0

抽象クラスを拡張することのポイントは、あなた自身のカスタム動作を念頭に置いていることです。実装する動作がわからない場合は、おそらく抽象クラスを実装していないはずです。既存の実装などを探しますが、*カスタム実装を実装する方法については説明できません。 – gnomed

0

私はこのコードが行うことになっているのか分からないが、それはその時点でヌルである理由それは明らかです。

"MyCall.getEarliestConnection()"では、自身の "getConnections()"メソッドを呼び出します。このメソッドはnullを返します。

関連する問題