WiFi Direct创建组空指针

时间:2013-03-14 03:11:04

标签: wifi

我想创建一个组来将当前设备平板电脑作为接入点,但是在回调方法onGroupInfoAvailable()中,我得到了一个组的空指针。为什么呢?

manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
channel = manager.initialize(this, getMainLooper(), null); 

manager.createGroup(channel, new ActionListener() {
    @Override
    public void onSuccess() {
        manager.requestGroupInfo(channel, new GroupInfoListener() {
             public void onGroupInfoAvailable(WifiP2pGroup group) {
            if(group != null)
               Toast.makeText(SasetBladderPadActivity.this, "Group Passphrase: " 
                                   + group.getPassphrase(), Toast.LENGTH_LONG).show();
            else
               Toast.makeText(SasetBladderPadActivity.this, "Group is null ", 
                                     Toast.LENGTH_LONG).show();
                }
            });
        }

        @Override
public void onFailure(int arg0) {
    // TODO Auto-generated method stub
            Toast.makeText(SasetBladderPadActivity.this, "Create group failed: " + arg0, \
                     Toast.LENGTH_LONG).show();
        }

    });

2 个答案:

答案 0 :(得分:0)

我认为您需要实现grouplistener然后@override ongroupinfoavailable方法。成功只是asyn的召唤。需要修改实际回调。

答案 1 :(得分:0)

是的,该组已创建但未显示。我将建议使用实现countdowntimer(或您可以使用任何其他计时器)的技巧来在一秒钟后启动requestGroupInfo()。修改后的代码将是:

 manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
 channel = manager.initialize(this, getMainLooper(), null); 

 manager.createGroup(channel, new ActionListener() {
    @Override
    public void onSuccess() {
            new CountDownTimer(1000, 1000) {
            public void onTick(long millisUntilFinished) {}
            public void onFinish() {
                manager.requestGroupInfo(channel, new GroupInfoListener() {
                    public void onGroupInfoAvailable(WifiP2pGroup group) {
                    if(group != null)
                    Toast.makeText(SasetBladderPadActivity.this, "Group Passphrase: "
                    + group.getPassphrase(), Toast.LENGTH_LONG).show();
                    else
                    Toast.makeText(SasetBladderPadActivity.this, "Group is null ",
                    Toast.LENGTH_LONG).show();
                    }
                });
            }
        }.start();
    }

    @Override
    public void onFailure(int arg0) {
    ...