Writing spinner and switch data to text file Android -


so have spinner able select different servers , write selected data text file retrieved other apps. on own working fine.

i needed add part switch confirm true or false encryption, , aim store string called later in file output stream.

i seem have got confused somewhere adding 2 separate strings in fos , 1 way tried gave me , error regarding 'byte' + 'byte' not being allowed. way have @ moment runs error in logcats

so need finding part broken , why won't accept strings , how fix it

the logs

        06-07 03:05:05.508 18344-18344/com.dooves.spinnertest w/resourcesmanager: gettoplevelresources: /data/app/com.dooves.spinnertest-1/base.apk / 1.0 running in com.dooves.spinnertest rsrc of package null     06-07 03:05:05.528 18344-18344/com.dooves.spinnertest w/system: classloader referenced unknown path: /data/app/com.dooves.spinnertest-1/lib/arm     06-07 03:05:05.558 18344-18344/com.dooves.spinnertest w/art: failed open zip archive '/system/framework/com.qti.location.sdk.jar': i/o error     06-07 03:05:06.768 18344-18344/com.dooves.spinnertest w/system: classloader referenced unknown path: /data/app/com.dooves.spinnertest-1/lib/arm     06-07 03:05:06.918 18344-18344/com.dooves.spinnertest w/resourcesmanager: gettoplevelresources: /data/app/com.dooves.spinnertest-1/base.apk / 1.0 running in com.dooves.spinnertest rsrc of package null     06-07 03:05:06.918 18344-18344/com.dooves.spinnertest w/resourcesmanager: gettoplevelresources: /data/app/com.dooves.spinnertest-1/base.apk / 1.0 running in com.dooves.spinnertest rsrc of package null     06-07 03:05:07.068 18344-18344/com.dooves.spinnertest w/art: before android 4.1, method android.graphics.porterduffcolorfilter android.support.graphics.drawable.vectordrawablecompat.updatetintfilter(android.graphics.porterduffcolorfilter, android.content.res.colorstatelist, android.graphics.porterduff$mode) have incorrectly overridden package-private method in android.graphics.drawable.drawable     06-07 03:05:07.208 18344-18344/com.dooves.spinnertest i/switch: mode attached=false laidout=false     06-07 03:05:07.208 18344-18344/com.dooves.spinnertest i/switch: mode attached=false laidout=false     06-07 03:05:07.248 18344-18344/com.dooves.spinnertest d/secwifidisplayutil: metadata value : none     06-07 03:05:07.248 18344-18344/com.dooves.spinnertest d/viewrootimpl: #1 mview = com.android.internal.policy.phonewindow$decorview{95a1ffb i.e...... r.....id 0,0-0,0}     06-07 03:05:07.248 18344-18547/com.dooves.spinnertest d/openglrenderer: use egl_swap_behavior_preserved: true     06-07 03:05:07.318 18344-18547/com.dooves.spinnertest i/adreno-egl: <qegldrvapi_eglinitialize:379>: egl 1.4 qualcomm build:  (ia10634f51b)                                                                         opengl es shader compiler version: e031.29.00.00                                                                         build date: 01/28/16 thu                                                                         local branch: ss                                                                         remote branch:                                                                          local patches:                                                                          reconstruct branch:      06-07 03:05:07.328 18344-18547/com.dooves.spinnertest d/libegl: eglinitialize egldisplay = 0x9f28b7c4     06-07 03:05:07.328 18344-18547/com.dooves.spinnertest i/openglrenderer: initialized egl, version 1.4     06-07 03:05:07.438 18344-18344/com.dooves.spinnertest w/displaylistcanvas: displaylistcanvas started on unbinded rendernode (without mowningview)     06-07 03:05:07.568 18344-18344/com.dooves.spinnertest d/viewrootimpl: msg_resized_report: ci=rect(0, 72 - 0, 0) vi=rect(0, 72 - 0, 0) or=1     06-07 03:05:07.598 18344-18344/com.dooves.spinnertest i/timeline: timeline: activity_idle id: android.os.binderproxy@ec4ad8a time:38728975     06-07 03:05:14.398 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 0     06-07 03:05:14.528 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 1     06-07 03:05:14.568 18344-18344/com.dooves.spinnertest d/abslistview: motionrecognitionmanager     06-07 03:05:14.578 18344-18344/com.dooves.spinnertest e/motionrecognitionmanager: mscontextservice = android.hardware.scontext.iscontextservice$stub$proxy@ebd8dc7     06-07 03:05:14.578 18344-18344/com.dooves.spinnertest e/motionrecognitionmanager: motionservice = com.samsung.android.motion.imotionrecognitionservice$stub$proxy@6d22ff4     06-07 03:05:14.578 18344-18344/com.dooves.spinnertest e/motionrecognitionmanager: motionservice = com.samsung.android.motion.imotionrecognitionservice$stub$proxy@6d22ff4     06-07 03:05:14.588 18344-18344/com.dooves.spinnertest d/viewrootimpl: #1 mview = android.widget.popupwindow$popupdecorview{1528992 v.e...... ......i. 0,0-0,0}     06-07 03:05:14.668 18344-18344/com.dooves.spinnertest w/displaylistcanvas: displaylistcanvas started on unbinded rendernode (without mowningview)     06-07 03:05:14.678 18344-18344/com.dooves.spinnertest d/viewrootimpl: msg_resized_report: ci=rect(0, 0 - 0, 0) vi=rect(0, 0 - 0, 0) or=1     06-07 03:05:15.398 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 0     06-07 03:05:15.518 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 1     06-07 03:05:15.938 18344-18547/com.dooves.spinnertest d/openglrenderer: endallactiveanimators on 0xadcbd280 (listpopupwindow$dropdownlistview) handle 0x9df14170     06-07 03:05:15.938 18344-18344/com.dooves.spinnertest d/viewrootimpl: #3 mview = null     06-07 03:05:16.378 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 0     06-07 03:05:16.478 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 1     06-07 03:05:18.278 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 0     06-07 03:05:18.388 18344-18344/com.dooves.spinnertest d/viewrootimpl: viewpostimeinputstage processpointer 1     06-07 03:05:18.398 18344-18344/com.dooves.spinnertest w/system.err: java.io.unsupportedencodingexception: &true     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.nio.charset.charset.fornameuee(charset.java:322)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.lang.string.getbytes(string.java:534)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ com.dooves.spinnertest.mainactivity.savesettings(mainactivity.java:114)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.lang.reflect.method.invoke(native method)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.support.v7.app.appcompatviewinflater$declaredonclicklistener.onclick(appcompatviewinflater.java:284)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.view.view.performclick(view.java:5697)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.widget.textview.performclick(textview.java:10826)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.view.view$performclick.run(view.java:22526)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.os.handler.handlecallback(handler.java:739)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.os.handler.dispatchmessage(handler.java:95)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.os.looper.loop(looper.java:158)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ android.app.activitythread.main(activitythread.java:7224)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.lang.reflect.method.invoke(native method)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1120)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err: caused by: java.nio.charset.illegalcharsetnameexception: &true     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.nio.charset.charset.checkcharsetname(charset.java:197)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.nio.charset.charset.forname(charset.java:295)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     @ java.nio.charset.charset.fornameuee(charset.java:320)     06-07 03:05:18.408 18344-18344/com.dooves.spinnertest w/system.err:     ... 14 more 

from unsure change correct this. if remove '&' string same logcat saying 'true' rather '&true'

here code

public class mainactivity extends appcompatactivity {     spinner spinner;     arrayadapter<charsequence> adapter;     string selectedserver;     switch passswitch;     string passwordencryption;        @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          spinner = (spinner) findviewbyid(r.id.spinner);         adapter = arrayadapter.createfromresource(this, r.array.serverurl, android.r.layout.simple_spinner_item);         adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);         spinner.setadapter(adapter);         passswitch = (switch) findviewbyid(r.id.passencrypt);          spinner.setonitemselectedlistener(new adapterview.onitemselectedlistener() {             @override             public void onitemselected(adapterview<?> parent, view view, int position, long id) {                 selectedserver = parent.getitematposition(position).tostring();             }              @override             public void onnothingselected(adapterview<?> parent) {              }          });          passswitch.setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() {             @override             public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) {                 if (ischecked) {                     passwordencryption = "&true";                 } else {                     passwordencryption = "&false";                 }             }         });     }               public void savesettings(view view) {                  file txtfolder = new file(environment.getexternalstoragedirectory().getabsolutepath()+"/myfolder/");                 if (!txtfolder.exists()) {                     txtfolder.mkdir();                 }                 file file = new file(txtfolder, "setting.txt");                 string.valueof(selectedserver.getbytes());                 string.valueof(passwordencryption.getbytes());                 try {                     fileoutputstream fos = new fileoutputstream(file);                     fos.write(selectedserver.getbytes(passwordencryption));                     fos.close();                     toast.maketext(getapplicationcontext(),"settings saved", toast.length_long).show();                 } catch (filenotfoundexception e) {                     e.printstacktrace();                 } catch (ioexception e) {                     e.printstacktrace();                 }               }      } 

the spinner populated string array in strings.xml file , contain 'server1, server2, server3, server4'. end result should show saved setting.txt file eg, server1&false or server3&true.

any appreciated

dave

this line causing issue:

fos.write(selectedserver.getbytes(passwordencryption)); 

string.getbytes(string charset) requires valid charset parameter such "utf8". instead, passing passwordencryption equals "$true" or "$false". neither of valid charset.

if fos.write(selectedserver + passwordencryption); output should server1&false