2014-03-31 2 views
1

저는 매끄러운 라이브러리를 사용하고 새로운 채팅 응용 프로그램을 만드는 데 익숙합니다.이 코드에서 친구를 추가하면 .. 작동합니다.android asmack에 친구를 추가 할 수 없습니다.

public void Addcontact() {  
Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual); 
Roster roster = m_connection.getRoster(); 

if(!roster.contains("[email protected]")) { 
try {   
     roster.createEntry("[email protected]", "abc", null);    
    } catch (XMPPException e) {   
     e.printStackTrace(); 
    } 
}else { 
    Log.i("error= ", "contains"); 
} 
} 

이 코드는 하나의 친구 ..를 추가하고있다,하지만 지금은 동적으로 명단에서 친구를 추가 할 .. 내가

private void addEntry(String jid, String user, String[] groups) { 
    Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual); 
    roster = commanInstant.connection.getRoster(); 

     try {   
      roster.createEntry(jid,user,null);    
      System.out.println(""+jid+user); 
     } catch (XMPPException e) {   
      e.printStackTrace(); 
      System.out.println(""+e); 
     } 
    } 
} 

그래서 나에게 널 포인터 execption을주고이 코드를 시도 버튼 클릭시. 여기

내가 적절한 해결책을 받고 있지 않다 매우 어리석은 질문이다 알지만,

03-31 12:34:19.740: D/AndroidRuntime(4886): Shutting down VM 
    03-31 12:34:19.770: E/AndroidRuntime(4886): FATAL EXCEPTION: main 
    03-31 12:34:19.770: E/AndroidRuntime(4886): java.lang.NullPointerException 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at org.jivesoftware.smack.packet.RosterPacket$Item.<init>(RosterPacket.java:117) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at org.jivesoftware.smack.Roster.createEntry(Roster.java:283) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at com.wisechatter.Contact_ListActivity.addEntry(Contact_ListActivity.java:176) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at co m.wisechatter.Contact_ListActivity.onClick(Contact_ListActivity.java:164) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at android.view.View.performClick(View.java:4204) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at android.view.View$PerformClick.run(View.java:17355) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at and roid.os.Handler.handleCallback(Handler.java:725) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at android.os.Handler.dispatchMessage(Handler.java:92) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at android.os.Looper.loop(Looper.java:137) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at android.app.ActivityThread.main(ActivityThread.java:5041) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at java.lang.reflect.Method.invokeNative(Native Method) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at java.lang.reflect.Method.invoke(Method.java:511) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    03-31 12:34:19.770: E/AndroidRuntime(4886): at dalvik.system.NativeStart.main(Native Method) 

내 로그 캣입니다 .. 좀 도와주세요 .. 미리 감사드립니다 .. :)

답변

3

바로 당신이 될 것입니다 여기에) 여기 add_account 라인

private void addEntry(String userName) 
{ 
    try { 
     Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual); 

     String jid=userName+Constants.ADVANTLPC__SMACK; 
     commanInstance.roster.createEntry(jid, jid , null); 
     Presence pres = new Presence(Presence.Type.subscribe); 
     pres.setFrom(jid); 
     commanInstance.connection.sendPacket(pres); 

     commanInstance.loadFriendList(); 

    } catch (Exception e) { 
     Log.e("tag", "unable to add contact: ", e); 
    } 

} 

}

및 loadfriendlist에서을 (변경 r 목록보기.

관련 문제