NsdManager не может быть найден с помощью context.getSystemService

У меня проблема с использованием 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 ответ

Решение

Чтобы использовать 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"/>
Другие вопросы по тегам