前面,我们已经把手机防盗的界面搭建好了,所以现在我们要开始正式编码了,由于前面我已经详细述说了,怎么去进行手机防盗,所以现在只贴代码了,代码里有详尽的注释,项目耗时一天。好吧!我觉得我还是需要讲一下,也为自己重新整理一下思路,首先我们需要创建两个Dialog,用以进行我们的用户密码输入,因为是防盗软件,所以我们需要在软件第一次运行,就设置用户名和密码,那么怎么实现我们的软件,第一次运行就会弹出那个对话框呢?答案很简单,那就是在SharedPerferences中创建一个字段,因为SharedPerferences第一次创建,里面肯定会没有数据,所以我们可以利用这一点,通过访问SharedPerferences取得一个字段。代码如下

 



1. /*得到SharedPreferences文件对象,如果没有则创建*/
2. m_SharedPreferences = getSharedPreferences("data", MODE_WORLD_WRITEABLE); 
3. firstLogin = m_SharedPreferences.getBoolean("first", true);//取得first值
4. /*如果软件是第一次启动则弹出设置密码对话框*/
5. if (firstLogin) {//判断是否第一次进入
6. setPasswordDialog();//软件第一次启动设置密码对话框
7. return; 
8. }else
9. loginPasswordDialog();//软件再次启动输入密码对话框
10. }  
11.


感觉这样很啰嗦了,贴上代码自己看吧,注释详尽:



1. package
2.  
3. import
4. import
5. import
6. import
7. import
8. import
9. import
10. import
11. import
12. import
13. import
14. import
15. import
16.  
17. public class MainActivity extends
18.  
19. /*定义两个对话框*/
20. private
21. private
22.      
23. private SharedPreferences m_SharedPreferences;  //定义SharedPreferences存储数据
24.      
25. /*定义控件*/
26. private
27. private
28.      
29. boolean firstLogin; //定义对话判断
30.      
31. boolean isSafe; //定义防盗判断
32.      
33. private
34. @Override
35. protected void
36. super.onCreate(savedInstanceState); 
37.          
38. /*得到SharedPreferences文件对象,如果没有则创建*/
39. "data", MODE_WORLD_WRITEABLE); 
40. "first", true); //取得first值
41.          
42. //得到TelephonyManager对象,用以得到IMSI码
43.          
44. /*如果软件是第一次启动则弹出设置密码对话框*/
45. if (firstLogin) {   //判断是否第一次进入
46. //软件第一次启动设置密码对话框
47. return; 
48. else
49. //软件再次启动输入密码对话框
50.         } 
51.     } 
52.  
53. private void
54. // TODO Auto-generated method stub
55.          
56. //到LayoutInflater对象
57. null); //得到setandlogindialog布局文件对象
58.          
59. /*根据控件ID取得控件对象*/
60. final
61. final
62.          
63.         Button btn_Ok = (Button) view.findViewById(R.id.btn_Ok); 
64.         Button btn_cancle = (Button) view.findViewById(R.id.btn_cancle); 
65.          
66. /*设置按钮属性 */
67. "登录"); 
68. "取消"); 
69.          
70. /*OK按钮的点击事件*/
71. new
72.              
73. @Override
74. public void
75.                  
76. /*取得输入框中的值*/
77.                 String userName = et_UserName.getText().toString(); 
78.                 String password = et_Password.getText().toString(); 
79.                  
80. /*取得m_SharedPreferences中存储的值*/
81. "userName", ""); 
82. "password", ""); 
83.                  
84. /*判断用户名和密码*/
85. if
86.                      
87.                     init(); 
88. //销毁对话框
89.                      
90. else
91.                      
92. this, "用户名或密码错误", Toast.LENGTH_LONG).show(); 
93. return; 
94.                 } 
95.             } 
96.         }); 
97.  
98. /*cancle按钮的点击事件*/
99. new
100.              
101. @Override
102. public void
103.                  
104. //退出应用
105.             } 
106.         }); 
107.          
108. new AlertDialog.Builder(this); 
109. "请输入用户名和密码"); 
110.         builder.setIcon(R.drawable.ic_launcher); 
111.         builder.setView(view); 
112.         loginPasswordDialog = builder.create(); 
113.         loginPasswordDialog.show();      
114.     } 
115.  
116. private void
117.     { 
118.         setContentView(R.layout.activity_main); 
119.          
120. /*根据控件ID取得控件对象*/
121.         et_SafeNumber = (EditText) findViewById(R.id.safeNumber); 
122.         btn_startSafe = (Button) findViewById(R.id.btn_startSafe); 
123.         btn_Modify = (Button) findViewById(R.id.btn_modify); 
124.          
125. "safenumber", ""); 
126.         et_SafeNumber.setText(number); 
127.          
128. "safestate", false); 
129.          
130. if
131. false); 
132. false); 
133. "关闭防盗"); 
134.         } 
135.          
136. new
137.              
138. @Override
139. public void
140. // TODO Auto-generated method stub
141.                 Editor editor = m_SharedPreferences.edit(); 
142.  
143. if
144. /*将信息写入SharedPreferences中*/
145. "safestate", false); 
146.                     editor.commit(); 
147. "开始防盗"); 
148. /*设置按钮为可见状态*/
149. true);     
150. true); 
151. false; 
152. else
153.                      
154.                     String numberStr = et_SafeNumber.getText().toString(); 
155.                      
156. if (numberStr.trim().equals("")) { 
157. this, "安全号码不能为空,请从新设置", Toast.LENGTH_LONG).show(); 
158. return; 
159.                     } 
160. else
161. //IMSI信息
162.                         String subScribeerID = tm.getSubscriberId(); 
163.                          
164. /*将信息写入SharedPreferences中*/
165. "safenumber", numberStr); 
166. true; 
167. "safestate", isSafe); 
168. "subscriberrid", subScribeerID); 
169.                         editor.commit();     
170. /*设置按钮为不可见状态*/
171. false); 
172. false); 
173.                          
174. "停止防盗");  //设置按钮显示文本属性
175.                     } 
176.                 } 
177.             } 
178.         }); 
179.          
180. new
181.              
182. @Override
183. public void
184. // TODO Auto-generated method stub
185.                 setPasswordDialog(); 
186.             } 
187.         }); 
188.     } 
189.      
190.      
191.      
192. private void
193. // TODO Auto-generated method stub
194.          
195.          
196. //到LayoutInflater对象
197. null); //得到setandlogindialog布局文件对象
198.          
199. /*根据控件ID取得控件对象*/
200. final
201. final
202.          
203.         Button btn_Ok = (Button) view.findViewById(R.id.btn_Ok); 
204.         Button btn_cancle = (Button) view.findViewById(R.id.btn_cancle); 
205.          
206. /*设置按钮属性*/
207. "设置"); 
208. "取消"); 
209.          
210. /*OK按钮的点击事件*/
211. new
212.              
213. @Override
214. public void
215.                  
216. /*取得输入框中的值*/
217.                 String userName = et_UserName.getText().toString(); 
218.                 String password = et_Password.getText().toString(); 
219.                  
220. /*判断用户名和密码是否为空*/
221. if (userName.trim().equals("") && password.trim().equals("")) { 
222.                      
223. this, "请输入用户名和密码", Toast.LENGTH_LONG).show(); 
224.  
225. else
226. /*将信息写入SharedPreferences中*/
227.                     Editor editor = m_SharedPreferences.edit(); 
228. "userName", userName); 
229. "password", password); 
230. "first", false); 
231.                     editor.commit(); 
232. /*销毁对话框,进入主界面*/
233.                     setPasswordDialog.dismiss();     
234.                     init(); 
235.                 } 
236.             } 
237.         }); 
238.  
239. /*cancle按钮的点击事件*/
240. new
241.              
242. @Override
243. public void
244. /*判断软件是否是第一次进入软件,第一次进入按取消按钮则退出软件,不是则销毁对话框*/
245. if
246.                     finish(); 
247. else
248.                     setPasswordDialog.dismiss(); 
249.                 } 
250.                  
251.             } 
252.         }); 
253.          
254. new AlertDialog.Builder(this);    //创建一个对话
255. "请设置用户名和密码");                          //设置标题
256. //设置ICon 
257. //设置显示的布局
258. //创建对话框
259. //显示对话框
260.     } 
261.  
262. @Override
263. public boolean
264. // Inflate the menu; this adds items to the action bar if it is present.
265.         getMenuInflater().inflate(R.menu.main, menu); 
266. return true; 
267.     } 
268.  
269. }

转载于:https://blog.51cto.com/shenlinyuxi/1194085