使用context.getSystemService找不到NsdManager

时间:2013-04-19 12:17:04

标签: java android network-service

我在使用context.getSystemService(Context.NSD_SERVICE)时遇到问题。它只是崩溃了。代码如下:

我的网络服务发现助手:

public NetworkServiceDiscoveryHelper(Context context)
{
    mContext = context;
    mNetworkDiscoveryManager = (NsdManager) context.getSystemService(Context.NSD_SERVICE);
}

我的活动类:

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    mNsdHelper = new NetworkServiceDiscoveryHelper(this);
    mNsdHelper.initializeNsd();


}

我一直在关注http://developer.android.com/training/connect-devices-wirelessly/nsd.html的示例代码,他们的活动构造函数略有不同:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mStatusView = (TextView) findViewById(R.id.status);

    mUpdateHandler = new Handler() {
            @Override
        public void handleMessage(Message msg) {
            String chatLine = msg.getData().getString("msg");
            addChatLine(chatLine);
        }
    };

    mConnection = new ChatConnection(mUpdateHandler);

    mNsdHelper = new NsdHelper(this);
    mNsdHelper.initializeNsd();

}

有人可以向我解释,为什么我的实施不起作用,我需要额外的功能吗?我基本上只是尝试通过创建服务来设置测试此功能,然后使用相同的手机再次查找该服务。到目前为止,我只实现了一个网络服务助手和活动。我是否需要设置任何其他功能。

1 个答案:

答案 0 :(得分:0)

要使用Wi-Fi Direct,请在清单中添加CHANGE_WIFI_STATE,ACCESS_WIFI_STATE和INTERNET权限。

<uses-permission
        android:required="true"
        android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.INTERNET"/>