目录

 

Android中文乱码

reload和cnvert区别

按行读取txt文件,按"|"进行字符串分割,标红的地方时 关键代码。很简单


 

Android中文乱码

 

 

reload和cnvert区别

在你所在的activity中设置编码格式,一般采用utf,有的采用gbk数据一般是别人下发数据你进行接收,那么就必须采用gbk进行格式转化;

上图中reload是你当前视图中看到的代码格式转换;

cnvert是将你跑应用时应用中文字显示的格式;

还有一种万能手法:

在build.gradle中添加  在android 目录中:compileOptions.encoding = "GBK”

 

按行读取txt文件,按"|"进行字符串分割,标红的地方时 关键代码。很简单

 

public class MainActivity extends AppCompatActivity {    private static final String TAG = "mainactivity";    Button button;    Button buttonScanner;    String fileName_xls_string = "/sdcard/import_inventory_data.xls";    String fileName_TXT_string = "/sdcard/import_inventory_data.TXT";    @BindView(R.id.im_11)    ImageView im11;    @BindView(R.id.im_12)    ImageView im12;    @BindView(R.id.im_13)    ImageView im13;    @BindView(R.id.im_21)    ImageView im21;    @BindView(R.id.im_22)    ImageView im22;    @BindView(R.id.im_23)    ImageView im23;    @BindView(R.id.im_31)    ImageView im31;    List data_news;    private Object usb;    TextView textView;    @TargetApi(Build.VERSION_CODES.LOLLIPOP)    @RequiresApi(api = Build.VERSION_CODES.KITKAT)    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);//        updateApks();        if (android.os.Build.VERSION.SDK_INT > 9) {            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();            StrictMode.setThreadPolicy(policy);        }        textView=(TextView) findViewById(R.id.tv_version);        textView.setText("当前版本: "+Tools.getVersion(this)+"");        InitData();        IntentFilter filter = new IntentFilter();        filter.addAction("com.android.server.scannerservice.broadcast");        this.registerReceiver(mResultReceiver, filter);       requestPermissions();        UpdateManager updateManager=new UpdateManager(MainActivity.this,"http://121.41.117.1:98/pcheck/version_pcheck.xml");        updateManager.checkUpdate();//        getUsb();    }    private void InitData() {        //数据查询        data_news = DBManager.getInstance(MainActivity.this).queryUserList();    }    //文件读取 execel格式    public List ReadExecelTwo(String strFilePath) throws IOException, BiffException {        List gate_list = new ArrayList<>();        Sheet sheet;        Workbook book;        //Q1G_Path为要读取的excel文件完全路径名        book = Workbook.getWorkbook(new File(strFilePath));        //获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)        sheet = book.getSheet(0);        for (int i = 2; i < sheet.getRows(); i++) {            //列对应Date对象标记-1            data_new gate = new data_new();            gate.setID(i - 1);//(列,行);            gate.setNUMBERING(sheet.getCell(0, i).getContents());//(列,行);            gate.setNAME(sheet.getCell(1, i).getContents());            gate.setCLASSIFICATION(sheet.getCell(2, i).getContents());            gate.setGETTING_METHOR(sheet.getCell(3, i).getContents());            gate.setSPECIFICATIONA(sheet.getCell(4, i).getContents());            gate.setCOUNTER(sheet.getCell(5, i).getContents());            gate.setGET_THE_DATA(sheet.getCell(6, i).getContents());            gate.setDATA_O_ENTRY(sheet.getCell(7, i).getContents());            gate.setVALUE_TYPE(sheet.getCell(8, i).getContents());            gate.setBOOK_AMOUNT(sheet.getCell(9, i).getContents());            gate.setVALUE_MONEY(sheet.getCell(10, i).getContents());            gate.setINVENTORY_AMOUNT(sheet.getCell(11, i).getContents());            gate.setINVENTORY_RESULT(sheet.getCell(12, i).getContents());            gate.setLOCATION(sheet.getCell(13, i).getContents());            gate.setUSER_OF_DEPARTMENT(sheet.getCell(14, i).getContents());            gate.setUSERS(sheet.getCell(15, i).getContents());            gate.setNOTE(sheet.getCell(16, i).getContents());            gate.setStatus("未盘");            gate_list.add(gate);        }        DBManager.getInstance(MainActivity.this).insertUserList(gate_list);        /*数据导出完成弹框*/        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);        builder.setTitle("提示");        builder.setMessage("数据导出完成");        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Toast.makeText(MainActivity.this, "已经导出数据", Toast.LENGTH_SHORT).show();            }        });        AlertDialog dialog = builder.create();        dialog.show();        return gate_list;    }    //文件读取2 txt格式    public List ReadTxTwo(String strFilePath) {        List gate_list = new ArrayList<>();        String path = strFilePath;        ArrayList newList = new ArrayList();        //打开文件        File file = new File(path);        //如果path是传递过来的参数,可以做一个非目录的判断        if (file.isDirectory()) {            Log.d("TestFile", "The File doesn't not exist  isDirectory");        } else {            try {                InputStream instream = new FileInputStream(file);                if (instream != null) {                    InputStreamReader inputreader = new InputStreamReader(instream);                    BufferedReader buffreader = new BufferedReader(inputreader);                    String line;                    String strLine;                    BufferedReader  reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));//Android解决读取txt文件中文乱码问题,                    //分行读取                    while ((line = reader.readLine()) != null) {                        newList.add(line + "\n");   //按行读取txt文件,                    }                    for (int i = 0; i < newList.size(); i++) {                        Log.d(TAG, "ReadTxtFile: " + newList.get(i));                        String data = newList.get(i);                        String[] arr = data.split("\\|");//根据“ ”和“,”区分 //按"|"进行字符串分割,标                        data_new gate = new data_new();                        gate.setID(i - 1);//(列,行);                        gate.setNUMBERING(arr[0]);//(列,行);                        gate.setNAME(arr[1]);                        gate.setBOOK_AMOUNT(arr[2]);                        gate.setVALUE_MONEY(arr[3]);                        gate.setStatus("未盘");                        gate_list.add(gate);                    }                    DBManager.getInstance(MainActivity.this).insertUserList(gate_list);        /*数据导出完成弹框*/                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);                    builder.setTitle("提示");                    builder.setMessage("数据导出完成");                    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                        @Override                        public void onClick(DialogInterface dialog, int which) {                            Toast.makeText(MainActivity.this, "已经导出数据", Toast.LENGTH_SHORT).show();                        }                    });                    AlertDialog dialog = builder.create();                    dialog.show();                    instream.close();                }            } catch (FileNotFoundException e) {                Log.d("TestFile", "The File doesn't not exist FileNotFoundException");            } catch (IOException e) {                Log.d("TestFile", e.getMessage());            }        }        return gate_list;    }    private BroadcastReceiver mResultReceiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            // TODO Auto-generated method stub            if (intent.getAction().equals("com.android.server.scannerservice.broadcast")) {                Log.d(TAG, "mResultReceiver scannerdata=" + intent.getStringExtra("scannerdata" + "1212121212121"));//                textView.setText(getString(R.string.m_1111) + intent.getStringExtra("scannerdata"));            }        }    };    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);    }    @OnClick({R.id.im_11, R.id.im_12, R.id.im_13, R.id.im_21, R.id.im_22, R.id.im_23, R.id.im_31})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.im_11://资产导入//                UpdateManager updateManager=new UpdateManager(MainActivity.this,"http://121.41.117.1:98/pcheck/version_pcheck.xml");//                updateManager.checkUpdate();                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);                builder.setTitle("提示");                builder.setMessage("点击确定导入数据");                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();                    }                });                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        try {                            File fileName_xls = new File(fileName_xls_string);                            File fileName_TXT = new File(fileName_TXT_string);                            if (fileName_xls.exists()&&fileName_TXT.exists()){                                Toast.makeText(MainActivity.this, "目录中存在txt和xls导入文件,请删除不需导入文件", Toast.LENGTH_LONG).show();                            }else {                                //根据文件类型读取文件                                if (fileName_xls.exists()){                                    ReadExecelTwo(fileName_xls_string);                                } else if (fileName_TXT.exists()){                                    ReadTxTwo(fileName_TXT_string);                                }                            }                        } catch (IOException e) {                            e.printStackTrace();                        } catch (BiffException e) {                            e.printStackTrace();                        }                    }                });                AlertDialog dialog = builder.create();                dialog.show();                break;            case R.id.im_12://资产导出//                SelfDialog.getInstanceYesAndNo//                        (MainActivity.this,"提示","确定导出数据","确定","取消")//                .buildYesAndNoDialog();                AlertDialog.Builder builder12 = new AlertDialog.Builder(MainActivity.this);                builder12.setTitle("提示");                builder12.setMessage("确定导出数据");                builder12.setNegativeButton("取消", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();                    }                });                builder12.setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        //导出数据Excel调用                        ExpportDataBeExcel expportDataBeExcel = new ExpportDataBeExcel(MainActivity.this);                        data_news = DBManager.getInstance(MainActivity.this).queryUserList();                        expportDataBeExcel.exportData(data_news);                    }                });                AlertDialog dialog12 = builder12.create();                dialog12.show();                break;            case R.id.im_13://数据重置                AlertDialog.Builder builder13 = new AlertDialog.Builder(MainActivity.this);                builder13.setTitle("提示");                builder13.setMessage("确定数据重置");                builder13.setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        for (int i=0;i() {                    @Override                    public void accept(Permission permission) throws Exception {                        if (permission.granted) {                            // 用户已经同意该权限                            Log.d(TAG, permission.name + " is granted.");                        } else if (permission.shouldShowRequestPermissionRationale) {                            // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时。还会提示请求权限的对话框                            Log.d(TAG, permission.name + " is denied. More info should be provided.");                        } else {                            // 用户拒绝了该权限,而且选中『不再询问』                            Log.d(TAG, permission.name + " is denied.");                        }                    }                });    }    @Override    protected void onDestroy() {        super.onDestroy();        if (mResultReceiver != null) {            this.unregisterReceiver(mResultReceiver);        }    }    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)    public Object getUsb() {        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);        HashMap deviceList = manager.getDeviceList();        Iterator deviceIterator = deviceList.values().iterator();        while(deviceIterator.hasNext()){            UsbDevice device = deviceIterator.next();            //your code            Log.d(TAG, "getUsb: "+device.getDeviceName()+"/"+device.getManufacturerName()+"/"+device.getProductName());        }        return usb;    }}
 

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android(安卓)OpenGLES2.0(十一)——利用OpenGLES做Camera预览
  3. Android(安卓)NDK——使用Android(安卓)Studio引用so库,jar包、mo
  4. Android(安卓)CrashHandler编写自己的异常捕获类
  5. Android(安卓)分享 - 向其它 App 发送数据
  6. Android(安卓)客户端与服务器端进行数据交互(一、登录服务器端)
  7. Android的轻量级数据库sqlite、以及文件存取byte数组
  8. Android中数据库常见操作实例分析
  9. Androd 添加新键值

随机推荐

  1. 代码论坛如何通过C的方式在android NDK下
  2. Android开发(一):环境搭建
  3. android游戏引擎andengine学习系列二:简单
  4. Android(安卓)ViewPager事件滑动监听修改
  5. Android(安卓)Material Design之Coordina
  6. 【073】Android(安卓)数据存储(SQLite)
  7. Android(安卓)将assets中的文件复制到外
  8. Handler:使用方式
  9. Android(安卓)8.0 以后广播接收不到出现
  10. 【Android(安卓)Developers Training】 1