Вкладка «Настройки Wi-Fi» не работает на устройствах Android (4.1)

У меня есть две вкладки в действии. Когда я запускаю приложение с обеими вкладками, оно показывает ошибку принудительного закрытия. Когда я запускаю то же приложение, комментируя строку tabHost.addTab(spec) для вкладки настроек Wi-Fi, открывается вкладка настроек часов. Но мне нужно открыть обе вкладки, т.е. настройки Wi-Fi и настройки часов.

Код здесь:

 setContentView(R.layout.preferences);
    pref_close   = (Button) findViewById(R.id.close_prefs);
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent( WifiManager.ACTION_PICK_WIFI_NETWORK);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("wifi").setIndicator("Wifi Settings",null).setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent(this, AppSettings.class);

    spec = tabHost.newTabSpec("settings").setIndicator(" Clock Settings",null).setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);

    pref_close.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            finish();               
        }

});
}
   }

Тот же код работает для устройства (Android3.0.1), но не работает для устройства (4.1.1). И мой логарифм:

03-30 07:47:35.921: E/AndroidRuntime(8712): FATAL EXCEPTION: main
03-30 07:47:35.921: E/AndroidRuntime(8712): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.visionexceed.timeclock/com.vision.timeclock.activity.Preferences}: java.lang.IllegalArgumentException: you must specify a way to create the tab content
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.ActivityThread.access$600(ActivityThread.java:140)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at  android.os.Looper.loop(Looper.java:137)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.ActivityThread.main(ActivityThread.java:4895)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at java.lang.reflect.Method.invokeNative(Native Method)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at java.lang.reflect.Method.invoke(Method.java:511)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at dalvik.system.NativeStart.main(Native Method)
03-30 07:47:35.921: E/AndroidRuntime(8712): Caused by: java.lang.IllegalArgumentException:  you must specify a way to create the tab content
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.widget.TabHost.addTab(TabHost.java:231)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at com.visionexceed.timeclock.activity.Preferences.onCreate(Preferences.java:35)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.Activity.performCreate(Activity.java:5163)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
03-30 07:47:35.921: E/AndroidRuntime(8712):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061)

person kumar Sudheer    schedule 30.03.2013    source источник
comment
Вы тестировали этот код на устройстве Android 4.1.??   -  person Dhaval Parmar    schedule 30.03.2013
comment
да, я тестирую устройство (4.1.1) и устройство (3.0.1) для устройства 3.0.1, обе вкладки открываются, и где, как и на устройстве 4.1.1, я получаю сообщение об ошибке.   -  person kumar Sudheer    schedule 30.03.2013


Ответы (2)


Вы не можете внедрить стороннее действие в пользовательский интерфейс вашего приложения. В лучшем случае вы получите виджеты, но ничего не будет работать, потому что у вас нет тех разрешений, которые есть у стороннего приложения. В худшем случае вы разобьетесь, как видите здесь.

Запустите WifiManager.ACTION_PICK_WIFI_NETWORK как обычное действие вне вкладок.

person CommonsWare    schedule 30.03.2013
comment
но он работает на устройстве ‹= 4.0 с вкладками. тогда почему он не работает в 4.1? - person Dhaval Parmar; 30.03.2013
comment
@DhavalSodhaParmar: но он работает на устройстве ‹= 4.0 - ненадежно и не на всех устройствах. тогда почему он не работает в 4.1? -- Они, видимо, усилили охрану. Запустите WifiManager.ACTION_PICK_WIFI_NETWORK как обычное действие вне вкладок. - person CommonsWare; 30.03.2013
comment
боковая вкладка означает, что без использования tabActivity просто используйте Activity. - person Dhaval Parmar; 30.03.2013
comment
@DhavalSodhaParmar: вызовите startActivity(), чтобы отобразить WifiManager.ACTION_PICK_WIFI_NETWORK, в ответ на нажатие кнопки, касание элемента панели действий, выбор меню и т. д. - person CommonsWare; 30.03.2013
comment
просто проверьте эту строку при нажатии кнопки или другом событии: startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK)); - person Dhaval Parmar; 30.03.2013
comment
@DhavalSodhaParmar да, когда я использовал этот код, startActivity(intent = new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK)); свойства Wi-Fi открываются после принудительного закрытия моего приложения, чего не может быть. Он должен быть открыт во вкладке. - person kumar Sudheer; 30.03.2013

Я проверил ваш код и он отлично работает на устройстве ниже 4.0. проверьте этот код без вкладки на устройстве 4.0.

потому что он работает на устройстве выше 4.0, проверьте это и эта ссылка.

person Community    schedule 30.03.2013
comment
да, он работает хорошо для устройств ниже 4.0. но мне нужно работать даже на устройствах 4.0+. только вкладка настроек Wi-Fi не работает... и вкладка настроек часов работает... - person kumar Sudheer; 30.03.2013