![Android知识点汇总集_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-12/16/5e19c301-ee51-4cfa-b364-0919eb1c6108/5e19c301-ee51-4cfa-b364-0919eb1c61081.gif)
![Android知识点汇总集_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-12/16/5e19c301-ee51-4cfa-b364-0919eb1c6108/5e19c301-ee51-4cfa-b364-0919eb1c61082.gif)
![Android知识点汇总集_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-12/16/5e19c301-ee51-4cfa-b364-0919eb1c6108/5e19c301-ee51-4cfa-b364-0919eb1c61083.gif)
![Android知识点汇总集_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-12/16/5e19c301-ee51-4cfa-b364-0919eb1c6108/5e19c301-ee51-4cfa-b364-0919eb1c61084.gif)
![Android知识点汇总集_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-12/16/5e19c301-ee51-4cfa-b364-0919eb1c6108/5e19c301-ee51-4cfa-b364-0919eb1c61085.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录Android知识点:3一:dom解析,以及写入数据到xml文件:3二:连接socket并获取返回值4三:创建socket服务器4四:获取本地设备信息;执行串口命令5五:获取设备当前时间5六:对于节省代码6七:访问网络权限6八:显示ProgressDialog6九:handle消息机制定义与对信息的处理6十:显示AlertDialog,以及对其进行按键处理7十一:判断网络是否连接8十二:判断是否连接有线网络8十三:判断是否能够ping通互联网:返回0则通,否则不通9十四:显示进度圈,防止用户继续其线程 start9十五:下载文件10十六:解析json文件(android中使用,解析本地文件
2、夹)11十七:解析服务器json文件,根据路径获取输入流并解析12十八:获取所有已经安装的apk的信息14十九:安装apk,分为静默安装与非静默安装,静默卸载15二零:发送与接收广播17二一:java中解析JSON文件18二二:获取文件列表19二三:DownloadManager21附件一:android-apkinfo.json23附件二:java_apkinfo_json24二四:复制assets中资源文件到sdcard或data/files目录下25二五:解析与重写xml文件27二六:设置Viewpager的Adapter适配器29二七:设置listView的Adapter适配器30二八
3、:设置按键监听器33二九:对于data中图片信息的处理与使用34三十:OnpageChangeListener页面切换监听器34三一:Activity之间数据的传递35三二:通过代码添加button36三三:文件的输入输出37三四:关于文件路径38三五:对sd卡的读写权限设置38三六:file.getCanonicalPath()39三七:命令行运行java文件39三八:activity无头标题40三九:activity全屏40四十:启动aitivity/service参数设置40四一:获取已经安装的apk信息40四二:Viewpager41四三:LayoutInflater42四四:mkdi
4、r与mkdirs42四五:创建对象Drawable与Bitmap43四六:获取屏幕分辨率43四七:消除EditText输入法弹框43四八:android:ellipsize的使用44四九:Edittext属性设置44五十:设置系统菜单语言45五一:android原生设置系统休眠时间45五二:判定ImageView是否可见45五三:关于fragment的使用46五四:打印全部的cursor信息47五五:拆分String,根据特殊符号48五六:获取与设置环境变量48五七:解析与获取文本信息48五八:实现本地升级功能49五九:获取挂载的存储设备的路径49六十:java反射机制,根据函数名调用函数50
5、六一:简单添加Menu选项51六二:获取当前显示的应用包名52六三:kill某一执行进程52常用C函数含义解析:541、memset542、snprintf54Android中遇到的小常识551,查看进程相关信息552,查看系统内存属性值553,修改文件权限以及分组55Android知识点:一:dom解析,以及写入数据到xml文件:获取输入流:File file = new File(String filepath);InputStream instream = new FileInputStream(file);private static void serialize(int data)
6、throws Exception logs(rewrite xmlFile);/ 由android.util.Xml创建一个XmlSerializer实例XmlSerializer serializer = Xml.newSerializer();StringWriter writer = new StringWriter();/ 设置输出方向为writerserializer.setOutput(writer);serializer.startDocument(UTF-8, true);serializer.startTag(, datas);serializer.startTag(, da
7、ta);serializer.text( + data);serializer.endTag(, data);serializer.endTag(, datas);serializer.endDocument();File file = new File(FILE_PATH + FILE_NAME);if (file.exists() file.delete();file.createNewFile();FileOutputStream io = new FileOutputStream(file);String xmlString = writer.toString();io.write(x
8、mlString.getBytes(UTF-8);/解析输入流,获取输入流中信息private static int parseXmlNative(InputStream is) throws Exception logs(parseXML in native);String data2 = null; / 获取最终使用期限/ 得到Dom解析对象工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();/ 通过工厂创建Dom解析对象实例DocumentBuilder db = factory.newDocum
9、entBuilder();/ 将xml文件的输入流交给Dom解析对象进行解析,并将Dom树返回Document document = db.parse(is);/ 通过Dom树接收到根元素Element rootElement = document.getDocumentElement();NodeList nodeList = rootElement.getElementsByTagName(data);Log.i(TAG, length = + nodeList.getLength();data2 = nodeList.item(0).getFirstChild().getNodeValu
10、e();return Integer.parseInt(data2);二:连接socket并获取返回值try String sRead;/参数为ip与端口号Socket socket = new Socket(SERVER_IP, PORT);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream();sRead = br.readLine();logs(sRead);socket.close();logs(socket is closed);serialize(Integer.par
11、seInt(sRead);logs(serialize in file, data = + Integer.parseInt(sRead);br.close(); catch (Exception e) logs(Exception);三:创建socket服务器public static void main(String args) try ServerSocket ss = new ServerSocket(30000); while (true) Socket s = ss.accept(); PrintStream ps = new PrintStream(s.getOutputStre
12、am(); ps.println(This is String in SocketMain!); ps.close(); s.close(); catch (IOException e) e.printStackTrace(); 当socket获取连接请求时,返回值为:This is String in SocketMain!四:获取本地设备信息;执行串口命令获取本地mac地址:private static String getEthMacAddress() try Process process = Runtime.getRuntime() .exec(busybox ifconfig et
13、h0); BufferedReader br = new BufferedReader(new InputStreamReader( process.getInputStream(); String inline = br.readLine(); String s = inline.split( ); String ethMac = ss.length - 1; br.close(); return ethMac; catch (IOException e) e.printStackTrace(); return null; 获取设备序列号:String serial = Build.SERI
14、AL;获取设备生产厂商String manufacturer = Build.MANUFACTURER;五:获取设备当前时间SimpleDateFormat format = new SimpleDateFormat(yyyyMMdd);Date curData = new Date(System.currentTimeMillis();String string_curtime = format.format(curData);int int_curime = Integer.parseInt(string_curtime);信息格式为yyyyMMdd(HHmmss)获取毫秒信息:Syste
15、m.currentTimeMillis();获取时间为自1970年1月1日0时0分起到当前的毫秒数之差。六:对于节省代码if(flag)return true;elsereturn false;等价于:return flag;七:访问网络权限八:显示ProgressDialog/显示正在检测网络提示,防止用户继续start该线程 mProgressDialog = new ProgressDialog(NetworkInforActivity.this, R.style.dialog);mProgressDialog.setCancelable(false);/阻止用户执行其他操作,但无法阻塞
16、home按键mProgressDialog.setMessage(getString(R.string.router_test);mProgressDialog.show();九:handle消息机制定义与对信息的处理mHandler.sendEmptyMessage(MSG_NETWORK_UNWAN);/发送消息,参数为(int)msg.whatprivate Handler mHandler = new Handler()Overridepublic void handleMessage(Message msg) super.handleMessage(msg);Log.i(TAG, 接
17、受信息为: + msg.what);switch (msg.what) case MSG_NETWORK_UNCONNECTED:mTvNetwork_type.setText(未连接);mTvNetwork_state.setText(未连接);mProgressDialog.dismiss();showFaildDialog();break;case MSG_NETWORK_ISETHERNET:mTvNetwork_type.setText(有线网络);mProgressDialog.dismiss();break;case MSG_NETWORK_UNETHERNET:mTvNetwo
18、rk_type.setText(无线网络);mProgressDialog.dismiss();break;case MSG_NETWORK_ISWAN:mTvNetwork_state.setText(互联网);mProgressDialog.dismiss();break;case MSG_NETWORK_UNWAN:mTvNetwork_state.setText(局域网);mProgressDialog.dismiss();default:break;十:显示AlertDialog,以及对其进行按键处理private void showFaildDialog() AlertDialog
19、.Builder dialog = new AlertDialog.Builder(this,R.style.dialog);dialog.setTitle(R.string.router_disconnect);dialog.setCancelable(false);dialog.setPositiveButton(R.string.button_testagain,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int whichButton) mProgressDialog
20、.show();new PingThread().start(););dialog.setNegativeButton(取消检测,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int whichButton) dialog.dismiss(););dialog.show();十一:判断网络是否连接/判断网络是否连接private boolean isNetConnected() isconnected = false; ConnectivityManager cm = (Con
21、nectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); if (cm = null) return false; NetworkInfo infos = cm.getAllNetworkInfo(); if (infos != null) for (NetworkInfo ni : infos) if (ni.isConnected() isconnected = true; return true; return false; 十二:判断是否连接有线网络/判断网络是否连接有线网络(Ethernet)private b
22、oolean isEthernetEnabled() ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); if (cm != null) NetworkInfo networkInfo = cm.getActiveNetworkInfo(); if (networkInfo != null & networkInfo.getType() = ConnectivityManager.TYPE_ETHERNET) isethernet = true; retur
23、n true; isethernet = false; return false; 十三:判断是否能够ping通互联网:返回0则通,否则不通/判断是否能够ping通互联网:返回0则通,否则不通public int isReachable(String remoteIpAddress, int pingTimes, double timeOut) int result = 1;String pingCommand = ping + -c + pingTimes + -i + timeOut + + remoteIpAddress;/该语句遵循linux中ping命令规则Runtime runti
24、me = Runtime.getRuntime();Process proc = null;try proc = runtime.exec(pingCommand);result = proc.waitFor(); catch (Exception e) e.printStackTrace();if (result = 0) isWAN = true;else isWAN = false;return result;十四:显示进度圈,防止用户继续其线程 startOverridepublic void onClick(View v) /显示进度圈,防止用户继续其线程 startmProgres
25、sDialog = new ProgressDialog(NetworkInforActivity.this, R.style.dialog);mProgressDialog.setCancelable(false);mProgressDialog.setMessage(getString(R.string.router_test);mProgressDialog.show();new PingThread().start();十五:下载文件下载指定路径(url)文件到目标路径(newUrl)private void download(String url, String newUrl) tr
26、y / 设置目标路径URL productUrl = new URL(url);/ 连接服务器URLConnection connection = productUrl.openConnection();/ 设置连接超时时间connection.setConnectTimeout(CONNECT_TIMEOUT);connection.setReadTimeout(READ_TIMEOUT);HttpURLConnection httpURLConnection = (HttpURLConnection) connection;logs( + productUrl);logs( + newUr
27、l);int responseCode = httpURLConnection.getResponseCode();logs( + responseCode);if (responseCode != HttpURLConnection.HTTP_OK) Log.e(TAG, Connect Error + url);return;InputStream in = httpURLConnection.getInputStream();logs(*begain download file: + url);logs(*begain download file: + newUrl);File f =
28、new File(newUrl);f.createNewFile();FileOutputStream fo = new FileOutputStream(f);byte buf = new byte1024;int len = 0;while (len = in.read(buf) != -1) fo.write(buf, 0, len);in.close();fo.close();downsuccess = true;Log.i(TAG, downLoad success); catch (Exception e) e.printStackTrace();logs(downLoader f
29、ailed);十六:解析json文件(android中使用,解析本地文件夹)private ArrayList JSONParse(String newUrl) ArrayList apkinfos = new ArrayList();/ReadFile()可以将路径为newUrl路径的文件数据转换为String类型数据String JsonContext = new FileToString().ReadFile(newUrl);try JSONArray jsonObjs = new JSONObject(JsonContext).getJSONArray(apk); for(int i
30、= 0; i jsonObjs.length() ; i+) JSONObject jsonObj = (JSONObject)jsonObjs.opt(i); ApkInfo apkInfo = new ApkInfo(); apkInfo.setFile_name(jsonObj.getString(file_name); logs(file_name = + jsonObj.getString(file_name); apkInfo.setPackage_name(jsonObj.getString(package_name); logs(package_name = + jsonObj
31、.getString(package_name); apkInfo.setVersionCode(Integer.parseInt(jsonObj.getString(versionCode); logs(versionCode = + Integer.parseInt(jsonObj.getString(versionCode); apkInfo.setVersionName(jsonObj.getString(versionName); logs(versionName = + jsonObj.getString(versionName); apkinfos.add(apkInfo); c
32、atch (JSONException e) System.out.println(Jsons parse error !); e.printStackTrace(); return apkinfos;public class FileToString /将指定路径的文件转换为String类型,并返回public String ReadFile(String Path) BufferedReader reader = null;String laststr = ;try FileInputStream fileInputStream = new FileInputStream(Path);In
33、putStreamReader inputStreamReader = new InputStreamReader(fileInputStream, UTF-8);reader = new BufferedReader(inputStreamReader);String tempString = null;while (tempString = reader.readLine() != null) laststr += tempString;reader.close(); catch (IOException e) e.printStackTrace(); finally if (reader
34、 != null) try reader.close(); catch (IOException e) e.printStackTrace();return laststr;十七:解析服务器json文件,根据路径获取输入流并解析/* * function: 解析json文件,其路径为newUrl,解析后将其存储到apkinfos中 * * param newUrl * param apkinfos * return */private ArrayList JSONParse(String apkInfoJSONPath) ArrayList apkinfos = new ArrayList()
35、;try URL productUrl = new URL(/app/apkinfo.json);/ 连接服务器URLConnection connection = productUrl.openConnection();/ 设置连接超时时间connection.setConnectTimeout(CONNECT_TIMEOUT);connection.setReadTimeout(READ_TIMEOUT);HttpURLConnection httpURLConnection = (HttpURLConnection) connection;int re
36、sponseCode = httpURLConnection.getResponseCode();logs( + responseCode);if (responseCode != HttpURLConnection.HTTP_OK) logs(connect error);return apkinfos;InputStream in = httpURLConnection.getInputStream();ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte data = new byte1024;int
37、len = 0;while (len = in.read(data) != -1) outputStream.write(data, 0, len);JSONArray jsonArray = new JSONObject(new String(outputStream.toByteArray().getJSONArray(apk);for (int i = 0; i jsonArray.length(); i+) JSONObject jsonObj = (JSONObject) jsonArray.opt(i);ApkInfo apkInfo = new ApkInfo();apkInfo
38、.setFile_name(jsonObj.getString(file_name);logs(file_name = + jsonObj.getString(file_name);apkInfo.setPackage_name(jsonObj.getString(package_name);logs(package_name = + jsonObj.getString(package_name);apkInfo.setVersionCode(Integer.parseInt(jsonObj.getString(versionCode);logs(versionCode = + Integer
39、.parseInt(jsonObj.getString(versionCode);apkInfo.setVersionName(jsonObj.getString(versionName);logs(versionName = + jsonObj.getString(versionName);apkinfos.add(apkInfo); catch (Exception e) e.printStackTrace();return apkinfos;十八:获取所有已经安装的apk的信息private ArrayList getAllApkInfo() PackageManager package
40、Manager = mContext.getPackageManager();ArrayList apkinfos = new ArrayList();List pack = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);for (int i = 0; i pack.size(); i+) ApkInfo apkinfo = new ApkInfo();PackageInfo p = pack.get(i);String s = p.applicationInfo.sourceDir;L
41、og.v(tag, p.applicationInfo.sourceDir);File file = new File(s);if (file.isFile() apkinfo.setFile_name(+ p.applicationInfo.loadLabel(packageManager);logs( + p.applicationInfo.loadLabel(packageManager);apkinfo.setPackage_name(p.packageName);logs(p.packageName);apkinfo.setVersionCode(p.versionCode);log
42、s(p.versionCode + );apkinfo.setVersionName(p.versionName);logs(p.versionName);apkinfos.add(apkinfo);return apkinfos;十九:安装apk,分为静默安装与非静默安装,静默卸载/* * function:非静默安装,安装apkAbsolutePath处apk文件,路径含文件名 * param apkAbsolutePath */public void Install(String apkAbsolutePath) Intent intent = new Intent(Intent.ACT
43、ION_VIEW);intent.setDataAndType(Uri.fromFile(new File(apkAbsolutePath), application/vnd.android.package-archive);mContext.startActivity(intent);/* * function:静默安装,安装apkAbsolutePath处apk文件,路径含文件名 * param apkAbsolutePath * return */静默安装需要将该apk置于system/app下,并需要在源码环境下编译,与系统具有相同的签名方可public String SilenceI
44、nstall(String apkAbsolutePath) String args = pm, install, -r, apkAbsolutePath ;String result = ;ProcessBuilder processBuilder = new ProcessBuilder(args);Process process = null;InputStream errIs = null;InputStream inIs = null;try ByteArrayOutputStream byteArrayOutPutStream = new ByteArrayOutputStream
45、();int read = -1;process = processBuilder.start();errIs = process.getErrorStream();while (read = errIs.read() != -1) byteArrayOutPutStream.write(read);byteArrayOutPutStream.write(/n.getBytes();inIs = process.getInputStream();while (read = inIs.read() != -1) byteArrayOutPutStream.write(read);byte dat
46、a = byteArrayOutPutStream.toByteArray();result = new String(data); catch (IOException e) e.printStackTrace(); catch (Exception e) e.printStackTrace(); finally try if (errIs != null) errIs.close();if (inIs != null) inIs.close(); catch (IOException e) e.printStackTrace();if (process != null) process.destroy();return result;/静默卸载private boolean uninstallPkg(String packageName) /Create new intent to launch Uninstaller activity/Uri packageURI = Uri.parse(package: + packageName);/Intent uninstallIntent = new
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天然植物纤维及人造纤维编织工艺品合作协议书
- 2025年柔印CTP合作协议书
- 自动化仪表考试培训试题2
- 2025年二手车带牌转让协议(三篇)
- 2025年个人房屋租赁协议合同模板(2篇)
- 2025年个人车辆转让协议参考样本(三篇)
- 山西省2024七年级道德与法治上册第三单元珍爱我们的生命第九课守护生命安全情境基础小练新人教版
- 2025年互联网信息网站公告服务协议(2篇)
- 2025年代理销售商品房协议样本(三篇)
- 2025年个人旅游协议格式版(2篇)
- 柴油机油-标准
- 足疗店营销策划方案
- 《初三开学第一课 中考动员会 中考冲刺班会》课件
- 学校安全一岗双责
- 2024年全国版图知识竞赛(小学组)考试题库大全(含答案)
- 产后修复学习培训课件
- 高考志愿咨询培训课件
- mysql课件第五章数据查询
- 超滤培训课件
- 热线电话管理制度
- 《海峡两岸经济合作框架协议》全文
评论
0/150
提交评论