Android防火墙+流量统计代码.docx
- 文档编号:7183694
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:15
- 大小:25.52KB
Android防火墙+流量统计代码.docx
《Android防火墙+流量统计代码.docx》由会员分享,可在线阅读,更多相关《Android防火墙+流量统计代码.docx(15页珍藏版)》请在冰豆网上搜索。
Android防火墙+流量统计代码
用于监听开机信息并初始化和启动服务
Java代码
1.package zy.dnh;
2.import java.io.File;
3.import java.io.FileOutputStream;
4.import java.io.IOException;
5.import android.content.BroadcastReceiver;
6.import android.content.Context;
7.import android.content.Intent;
8.import android.widget.Toast;
9.public class getpowerinfo extends BroadcastReceiver{
10. FileOutputStream out;
11. final public String ONPATH = "/data/data/zy.dnh/on.txt";
12. @Override
13. public void onReceive(Context context, Intent intent) {
14. // TODO Auto-generated method stub
15.
16. if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
17. Intent bootActivityIntent=new Intent(context,mService1.class);//启动服务
18. bootActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
19. writefile("0,0,0,0,0,0,0,0,0,0,0,0",ONPATH);
20. context.startService(bootActivityIntent);
21. Toast.makeText(context, "Netcounter service has been lauched", Toast.LENGTH_LONG).show();
22. Api.applySavedIptablesRules(context, false);//应用防火墙规则
23. Toast.makeText(context, "Wall rules have been lauched", Toast.LENGTH_LONG).show();
24. }
25. }
26. public void writefile(String str,String path )
27. {
28. File file;
29. try {
30. //创建文件
31. file = new File(path);
32. file.createNewFile();
33.
34. //打开文件file的OutputStream
35. out = new FileOutputStream(file);
36. String infoToWrite = str;
37. //将字符串转换成byte数组写入文件
38. out.write(infoToWrite.getBytes());
39. //关闭文件file的OutputStream
40. out.close();
41.
42.
43.
44. } catch (IOException e) {
45. //将出错信息打印到Logcat
46.
47.
48. }
mService1模块
后台服务,用于维护流量日志
Java代码
1.public class mService1 extends Service
2.{
3.
4.
5. private Handler objHandler = new Handler();
6. private int intCounter=0;
7. private int mHour;
8. private int mMinute;
9. private int mYear;
10. private int mMonth;
11. private int mDay;
12. private String mdate;
13.
14.
15. final public String DEV_FILE = "/proc/self/net/dev";//系统流量文件
16. String[] ethdata={"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};
17. String[] gprsdata={"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};
18. String[] wifidata={"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};
19. String data="0,0,0,0,0,0,0,0,0,0,0,0";//对应on.txt里面的格式
20. final String ETHLINE=" eth0";//以太网信息所在行
21. final String GPRSLINE="rmnet0";
22. final String WIFILINE="tiwlan0";
23.
24. final String TEXT_ENCODING = "UTF-8";
25.
26. final public String ONPATH = "/data/data/zy.dnh/on.txt";
27. final public String LOGPATH = "/data/data/zy.dnh/log.txt";
28.
29. private Runnable mTasks = new Runnable()
30. {
31.
32. public void run()//运行该服务执行此函数
33. {
34. refresh();
35.
36.
37. intCounter++;
38. // DisplayToast("Counter:
"+Integer.toString(intCounter));
39. objHandler.postDelayed(mTasks, 30000);//每3000毫秒执行一次
40. }
41. };
42.
43. @Override
44. public void onStart(Intent intent, int startId)
45. {
46. // TODO Auto-generated method stub
47. //writefile("0,0,0,0,0,0,0,0,0,0,0,0",ONPATH);//每次启动服务 初始化onpath
48.
49. objHandler.postDelayed(mTasks, 0);
50. super.onStart(intent, startId);
51. }
52. @Override
53. public void onCreate()
54. {
55. // TODO Auto-generated method stub
56.
57. super.onCreate();
58. }
59.
60. @Override
61. public IBinder onBind(Intent intent)
62. {
63. // TODO Auto-generated method stub
64.
65.
66. return null;
67. }
68. @Override
69. public void onDestroy()
70. {
71. // TODO Auto-generated method stub
72.
73. /* */
74. objHandler.removeCallbacks(mTasks);
75. super.onDestroy();
76. }
77. public void DisplayToast(String str)
78. {
79. Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
80. }
81. public void readdev()
82. {
83. FileReader fstream = null;
84. try {
85. fstream = new FileReader(DEV_FILE);
86.
87. }
88. catch (FileNotFoundException e) {
89. DisplayToast("Could not read " + DEV_FILE);
90.
91. }
92. BufferedReader in = new BufferedReader(fstream, 500);
93. String line;
94. String[] segs;
95. String[] netdata;
96.
97. int count=0;
98. int k;
99. int j;
100. try {
101. while ((line = in.readLine()) !
= null) {
102. segs = line.trim().split(":
");
103. if(line.startsWith(ETHLINE))
104. {
105.
106. netdata=segs[1].trim().split(" ");
107. for(k=0,j=0;k 108. { 109. if(netdata[k].length()>0) 110. { 111. 112. ethdata[j]=netdata[k]; 113. j++; 114. } 115. } 116. } 117. else if(line.startsWith(GPRSLINE)) 118. { 119. 120. netdata=segs[1].trim().split(" "); 121. for(k=0,j=0;k 122. { 123. if(netdata[k].length()>0) 124. { 125. 126. gprsdata[j]=netdata[k]; 127. j++; 128. } 129. } 130. } 131. else if(line.startsWith(WIFILINE)) 132. { 133. 134. netdata=segs[1].trim().split(" "); 135. for(k=0,j=0;k 136. { 137. if(netdata[k].length()>0) 138. { 139. 140. wifidata[j]=netdata[k]; 141. j++; 142. } 143. } 144. } 145. 146. 147. 148. 149. count++; 150. } 151. fstream.close(); 152. 153. } 154. catch (IOException e) { 155. DisplayToast(e.toString()); 156. } 157. } 158. public String getinfo(String path) 159. { 160. File file; 161. String str=""; 162. FileInputStream in; 163. try{ 164. //打开文件file的InputStream 165. file = new File(path); 166. in = new FileInputStream(file); 167. //将文件内容全部读入到byte数组 168. int length = (int)file.length(); 169. byte[] temp = new byte[length]; 170. in.read(temp, 0, length); 171. //将byte数组用UTF-8编码并存入display字符串中 172. str = EncodingUtils.getString(temp,TEXT_ENCODING); 173. //关闭文件file的InputStream 174. in.close(); 175. } 176. catch (IOException e) { 177. 178. DisplayToast(e.toString()); 179. 180. } 181. return str; 182. } 183. public void writefile(String str,String path ) 184. { 185. File file; 186. FileOutputStream out; 187. try { 188. //创建文件 189. file = new File(path); 190. file.createNewFile(); 191. //打开文件file的OutputStream 192. out = new FileOutputStream(file); 193. String infoToWrite = str; 194. //将字符串转换成byte数组写入文件 195. out.write(infoToWrite.getBytes()); 196. //关闭文件file的OutputStream 197. out.close(); 198. } catch (IOException e) { 199. //将出错信息打印到Logcat 200. DisplayToast(e.toString()); 201. 202. } 203. } 204. public void refresh() 205. { 206. 207. 208. readdev();//读取本次开机之后直到当前系统的总流量 209. 210. data=ethdata[0]+","+ethdata[1]+","+ethdata[8]+","+ethdata[9]+"," 211. +gprsdata[0]+","+gprsdata[1]+","+gprsdata[8]+","+gprsdata[9]+"," 212. +wifidata[0]+","+wifidata[1]+","+wifidata[8]+","+wifidata[9]; 213. String onstr=getinfo(ONPATH);//读取on.txt记录到onstr里 214. String ondata[]=onstr.split(",");//将onstr各项分离 放到ondata里 215. //计算增量 216. int [] delta=new int [12]; 217. 218. delta[0]=Integer.parseInt(ethdata[0])-Integer.parseInt(ondata[0]); 219. delta[1]=Integer.parseInt(ethdata[1])-Integer.parseInt(ondata[1]); 220. delta[2]=Integer.parseInt(ethdata[8])-Integer.parseInt(ondata[2]); 221. delta[3]=Integer.parseInt(ethdata[9])-Integer.parseInt(ondata[3]); 222. delta[4]=Integer.parseInt(gprsdata[0])-Integer.parseInt(ondata[4]); 223. delta[5]=Integer.parseInt(gprsdata[1])-Integer.parseInt(ondata[5]); 224. delta[6]=Integer.parseInt(gp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 防火墙 流量 统计 代码