Browse Source

fix error

lqg 1 year ago
parent
commit
67b8467af9

+ 2 - 0
app/build.gradle

@@ -2,6 +2,7 @@ apply plugin: 'com.android.application'
 
 android {
     compileSdkVersion 32
+    useLibrary 'org.apache.http.legacy'
 
     defaultConfig {
         applicationId "me.yoqi.mobile.safe"
@@ -15,4 +16,5 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
     }
+    
 }

+ 4 - 4
app/proguard-project.txt

@@ -1,4 +1,4 @@
-# 保存被AndroidManifest.xml调用或者webview的类
+# 淇濆瓨琚獳ndroidManifest.xml璋冪敤鎴栬€厀ebview鐨勭被
 -keepclassmembers class fqcn.of.javascript.interface.for.webview {   public *; }
 -keep public class * extends android.app.Activity
 -keep public class * extends android.app.Application                  
@@ -8,16 +8,16 @@
 -keep public class * extends android.app.backup.BackupAgentHelper     
 -keep public class * extends android.preference.Preference
 
-#第三方类库
+#绗�笁鏂圭被搴�
 -keep 	class android.** {*;}
 -keep 	class com.jeremyfeinstein.slidingmenu.lib.** {*;}
 -keep 	class com.actionbarsherlock.** 	 {*;}
 -keep 	class com.lidroid.xutils.** 	 {*;}
 
-# 保留所有具有公有访问权限的类和其公共成员
+# 淇濈暀鎵€鏈夊叿鏈夊叕鏈夎�闂�潈闄愮殑绫诲拰鍏跺叕鍏辨垚鍛�
 #-keepclasseswithmembers 	class *{	    public *;	}
 
-# 删除Log代码
+# 鍒犻櫎Log浠g爜
 -assumenosideeffects 	class android.util.Log 	{
 		public static ***		 e(...);
 		public static ***		 w(...);

+ 210 - 210
app/src/main/java/me/yoqi/mobile/db/DbAdapter.java

@@ -1,225 +1,225 @@
 package me.yoqi.mobile.db;
 
-
-
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.util.Log;
+
 import me.yoqi.mobile.info.Call_Forbid_Info;
 import me.yoqi.mobile.info.Call_Record_Info;
 import me.yoqi.mobile.info.Message_Forbid_Info;
 import me.yoqi.mobile.info.Message_Rubbish_Info;
 
 public class DbAdapter {
-	
-	private static final String TAG = "DbAdapter";
-	private DatabaseHelper mDatabaseHelper;
-	private SQLiteDatabase mSQLiteDatabase;
-	private Context mContext;
-	private static final String DB = "db.db";
-	private static final int DB_VERSION = 1;
-	
-	//	5个表:短信黑名单表,短信垃圾箱表,来电黑名单表,来电拦截记录表
-	public static final String MESSAGE_FORBID_TABLE_NAME = "message_forbid_table";
-	public final static String MESSAGE_RUBBISH_TABLE_NAME = "message_rubbish_table";
-	public final static String CALL_FORBID_TABLE_NAME = "call_forbid_table";
-	public final static String CALL_RECORD_TABLE_NAME = "call_record_table";
-	//	公用id字段
-	public static final String TABLE_ID = "_id";
-	// 短信黑名单表字段:来电号码
-	public final static String MESSAGE_FORBID_PHONE = "message_forbid_phone";
-	//	短信垃圾箱表字段:垃圾短信号码,收件时间,短信内容
-	public static final String MESSAGE_RUBBISH_PHONE = "message_rubbish_phone";
-	public static final String MESSAGE_RUBBISH_TIME = "message_rubbish_time";
-	public final static String MESSAGE_RUBBISH_CONTENT = "message_rubbish_content";
-	//	来电黑名单表字段:黑名单号码		
-	public static final String CALL_FORBID_PHONE = "call_forbid_phone";
-	//	来电拦截记录表字段:黑名单号码:来电时间,来电归属地
-	public static final String CALL_RECORD_PHONE = "call_record_phone";
-	public static final String CALL_RECORD_TIME = "call_record_time";
-	public static final String CALL_RECORD_AREA = "call_record_area";
-	
-	public DbAdapter(Context mCtx){
-		Log.d(TAG, "mCtxmTab");
-		mContext=mCtx;
-	}
-	
-	public void close(){
-		Log.d(TAG, "close");
-		mDatabaseHelper.close();
-	}
-	
-	public DbAdapter open(){
-		Log.d(TAG, "open");
-		mDatabaseHelper=new DatabaseHelper(mContext);
-		mSQLiteDatabase=mDatabaseHelper.getWritableDatabase();
-		return this;
-	}
-	
-	public Cursor getAll(String table){
-		Log.d(TAG, "getAll");
-		return mSQLiteDatabase.rawQuery("select * from "+table, null);
-	}
-	public Cursor getPhone(String phone,int i){
-		Cursor mReturn = null;
-		switch(i){
-		case 1:
-			mReturn= mSQLiteDatabase.rawQuery("select * from "+MESSAGE_RUBBISH_TABLE_NAME+" where "+MESSAGE_RUBBISH_PHONE+"="+"\'"+phone+"\'", null);
-			break;
-		case 2:
-			mReturn= mSQLiteDatabase.rawQuery("select * from "+MESSAGE_FORBID_TABLE_NAME+" where "+MESSAGE_FORBID_PHONE+"="+"\'"+phone+"\'", null);
-			break;
-		case 3:
-			mReturn =mSQLiteDatabase.rawQuery("select * from "+CALL_RECORD_TABLE_NAME+" where "+CALL_RECORD_PHONE+"="+"\'"+phone+"\'", null);
-			break;
-		case 4:
-			mReturn= mSQLiteDatabase.rawQuery("select * from "+CALL_FORBID_TABLE_NAME+" where "+CALL_FORBID_PHONE+"="+"\'"+phone+"\'", null);
-			break;
-		}
-		return mReturn;
-	}
-	
-	public Cursor getTime(String tableName,String columnName,String recordTime){
-		return mSQLiteDatabase.rawQuery("select * from "+tableName+" where "+columnName+" = "+"\'"+recordTime+"\'", null);
-	}
-	
-	public Cursor getId(long id,String tableName){
-		return mSQLiteDatabase.rawQuery("select * from "+tableName+" where "+TABLE_ID+" = "+ id, null);
-	}
-	
-	public Long getAdd(Message_Rubbish_Info mInfo){
-		ContentValues mValues=new ContentValues();
-		mValues.put(MESSAGE_RUBBISH_CONTENT,mInfo.getMessage_rubbish_content() );
-		mValues.put(MESSAGE_RUBBISH_PHONE, mInfo.getMessage_rubbish_phone());
-		mValues.put(MESSAGE_RUBBISH_TIME, mInfo.getMessage_rubbish_time());
-		long rowId=mSQLiteDatabase.insert(MESSAGE_RUBBISH_TABLE_NAME, null,mValues);
-		return rowId;	
-	}
-	
-	public Long getAdd(Message_Forbid_Info mInfo){
-		ContentValues mValues=new ContentValues();
-		mValues.put(MESSAGE_FORBID_PHONE,mInfo.getMessage_forbid_phone() );
-		long rowId=mSQLiteDatabase.insert(MESSAGE_FORBID_TABLE_NAME, null,mValues);
-		return rowId;	
-	}
-	
-	public Long getAdd(Call_Forbid_Info mInfo){
-		ContentValues mValues=new ContentValues();
-		mValues.put(CALL_FORBID_PHONE,mInfo.getCall_forbid_phone() );
-		long rowId=mSQLiteDatabase.insert(CALL_FORBID_TABLE_NAME, null,mValues);
-		return rowId;	
-	}
-	
-	public Long getAdd(Call_Record_Info mInfo){
-		ContentValues mValues=new ContentValues();
-		mValues.put(CALL_RECORD_AREA,mInfo.getCall_record_area() );
-		mValues.put(CALL_RECORD_PHONE, mInfo.getCall_record_phone());
-		mValues.put(CALL_RECORD_TIME, mInfo.getCall_record_time());
-		long rowId=mSQLiteDatabase.insert(CALL_RECORD_TABLE_NAME, null,mValues);
-		return rowId;	
-	}
-	
-	public boolean getDel(long rowId,String table){
-		return mSQLiteDatabase.delete(table, TABLE_ID+"="+rowId, null) > 0;	
-	}
-	
-	public boolean getDel(String table, String column, String phone){
-		return mSQLiteDatabase.delete(table, column+"=?", new String[]{phone}) > 0;	
-	}
-	
-	public void deleteTable(String tableName){
-		mSQLiteDatabase.execSQL("delete from "+tableName);
-	}
-	
-	private static class DatabaseHelper extends SQLiteOpenHelper{
-		
-		StringBuilder mStringBuilder_1;
-		StringBuilder mStringBuilder_2;
-		StringBuilder mStringBuilder_3;
-		StringBuilder mStringBuilder_4;
-		
-		public DatabaseHelper(Context context) {
-			super(context, DB, null, DB_VERSION);
-		}
-		
-		public void initCreateSQL(){
-					mStringBuilder_1=new StringBuilder();
-					mStringBuilder_1.delete(0, mStringBuilder_1.length());
-					Log.d(TAG, "initCreateSQL");
-					mStringBuilder_1.append("create table ");
-					mStringBuilder_1.append(MESSAGE_RUBBISH_TABLE_NAME );
-					mStringBuilder_1.append("(");
-					mStringBuilder_1.append(TABLE_ID );	
-					mStringBuilder_1.append(" integer primary key AUTOINCREMENT,");
-					mStringBuilder_1.append(MESSAGE_RUBBISH_PHONE);
-					mStringBuilder_1.append(" text ,");
-					mStringBuilder_1.append(MESSAGE_RUBBISH_TIME);
-					mStringBuilder_1.append(" text ,");
-					mStringBuilder_1.append(MESSAGE_RUBBISH_CONTENT);
-					mStringBuilder_1.append(" text ");
-					mStringBuilder_1.append(" );");
-					Log.d(TAG, "MESSAGE_RUBBISH_TABLE_NAME");
-					mStringBuilder_2=new StringBuilder();
-					mStringBuilder_2.append("create table ");	
-					mStringBuilder_2.append(MESSAGE_FORBID_TABLE_NAME );
-					mStringBuilder_2.append("( ");
-					mStringBuilder_2.append(TABLE_ID);	
-					mStringBuilder_2.append(" integer primary key AUTOINCREMENT,");
-					mStringBuilder_2.append(MESSAGE_FORBID_PHONE);
-					mStringBuilder_2.append(" text");
-					mStringBuilder_2.append(" );");
-					Log.d(TAG, "MESSAGE_FORBID_TABLE_NAME");
-					mStringBuilder_3=new StringBuilder();
-					mStringBuilder_3.append("create table ");	
-					mStringBuilder_3.append(CALL_RECORD_TABLE_NAME );
-					mStringBuilder_3.append("( ");
-					mStringBuilder_3.append(TABLE_ID );	
-					mStringBuilder_3.append(" integer primary key AUTOINCREMENT,");
-					mStringBuilder_3.append(CALL_RECORD_PHONE);
-					mStringBuilder_3.append(" text,");
-					mStringBuilder_3.append(CALL_RECORD_TIME);
-					mStringBuilder_3.append(" text,");
-					mStringBuilder_3.append(CALL_RECORD_AREA);
-					mStringBuilder_3.append(" text ");
-					mStringBuilder_3.append(" );");
-					Log.d(TAG, "CALL_RECORD_TABLE_NAME");
-					mStringBuilder_4=new StringBuilder();
-					mStringBuilder_4.append("create table ");	
-					mStringBuilder_4.append(CALL_FORBID_TABLE_NAME );
-					mStringBuilder_4.append("( ");
-					mStringBuilder_4.append(TABLE_ID );	
-					mStringBuilder_4.append(" integer primary key AUTOINCREMENT,");
-					mStringBuilder_4.append(CALL_FORBID_PHONE);
-					mStringBuilder_4.append(" text");	
-					mStringBuilder_4.append(" );");	
-					Log.d(TAG, "CALL_FORBID_TABLE_NAME");
-				
-		}
-		
-		@Override
-		public void onCreate(SQLiteDatabase db) {
-			Log.d(TAG, "onCreate");
-			Log.d(TAG, "mStringBuilder");
-			
-			initCreateSQL();
-			db.execSQL(mStringBuilder_1.toString());
-			Log.d(TAG, mStringBuilder_1.toString());
-			db.execSQL(mStringBuilder_2.toString());
-			Log.d(TAG, mStringBuilder_2.toString());
-			db.execSQL(mStringBuilder_3.toString());
-			Log.d(TAG, mStringBuilder_3.toString());
-			db.execSQL(mStringBuilder_4.toString());
-			Log.d(TAG, mStringBuilder_4.toString());
-		}
-
-		@Override
-		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-			db.execSQL("drop table if exists"+MESSAGE_RUBBISH_TABLE_NAME, null);
-			Log.d(TAG, "onUpgrade");
-		}
-		
-	}
+
+    private static final String TAG = "DbAdapter";
+    private DatabaseHelper mDatabaseHelper;
+    private SQLiteDatabase mSQLiteDatabase;
+    private Context mContext;
+    private static final String DB = "db.db";
+    private static final int DB_VERSION = 1;
+
+    //	5个表:短信黑名单表,短信垃圾箱表,来电黑名单表,来电拦截记录表
+    public static final String MESSAGE_FORBID_TABLE_NAME = "message_forbid_table";
+    public final static String MESSAGE_RUBBISH_TABLE_NAME = "message_rubbish_table";
+    public final static String CALL_FORBID_TABLE_NAME = "call_forbid_table";
+    public final static String CALL_RECORD_TABLE_NAME = "call_record_table";
+    //	公用id字段
+    public static final String TABLE_ID = "_id";
+    // 短信黑名单表字段:来电号码
+    public final static String MESSAGE_FORBID_PHONE = "message_forbid_phone";
+    //	短信垃圾箱表字段:垃圾短信号码,收件时间,短信内容
+    public static final String MESSAGE_RUBBISH_PHONE = "message_rubbish_phone";
+    public static final String MESSAGE_RUBBISH_TIME = "message_rubbish_time";
+    public final static String MESSAGE_RUBBISH_CONTENT = "message_rubbish_content";
+    //	来电黑名单表字段:黑名单号码
+    public static final String CALL_FORBID_PHONE = "call_forbid_phone";
+    //	来电拦截记录表字段:黑名单号码:来电时间,来电归属地
+    public static final String CALL_RECORD_PHONE = "call_record_phone";
+    public static final String CALL_RECORD_TIME = "call_record_time";
+    public static final String CALL_RECORD_AREA = "call_record_area";
+
+    public DbAdapter(Context mCtx) {
+        Log.d(TAG, "mCtxmTab");
+        mContext = mCtx;
+    }
+
+    public void close() {
+        Log.d(TAG, "close");
+        mDatabaseHelper.close();
+    }
+
+    public DbAdapter open() {
+        Log.d(TAG, "open");
+        mDatabaseHelper = new DatabaseHelper(mContext);
+        mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
+        return this;
+    }
+
+    public Cursor getAll(String table) {
+        Log.d(TAG, "getAll");
+        return mSQLiteDatabase.rawQuery("select * from " + table, null);
+    }
+
+    public Cursor getPhone(String phone, int i) {
+        Cursor mReturn = null;
+        switch (i) {
+            case 1:
+                mReturn = mSQLiteDatabase.rawQuery("select * from " + MESSAGE_RUBBISH_TABLE_NAME + " where " + MESSAGE_RUBBISH_PHONE + "=" + "\'" + phone + "\'", null);
+                break;
+            case 2:
+                mReturn = mSQLiteDatabase.rawQuery("select * from " + MESSAGE_FORBID_TABLE_NAME + " where " + MESSAGE_FORBID_PHONE + "=" + "\'" + phone + "\'", null);
+                break;
+            case 3:
+                mReturn = mSQLiteDatabase.rawQuery("select * from " + CALL_RECORD_TABLE_NAME + " where " + CALL_RECORD_PHONE + "=" + "\'" + phone + "\'", null);
+                break;
+            case 4:
+                mReturn = mSQLiteDatabase.rawQuery("select * from " + CALL_FORBID_TABLE_NAME + " where " + CALL_FORBID_PHONE + "=" + "\'" + phone + "\'", null);
+                break;
+        }
+        return mReturn;
+    }
+
+    public Cursor getTime(String tableName, String columnName, String recordTime) {
+        return mSQLiteDatabase.rawQuery("select * from " + tableName + " where " + columnName + " = " + "\'" + recordTime + "\'", null);
+    }
+
+    public Cursor getId(long id, String tableName) {
+        return mSQLiteDatabase.rawQuery("select * from " + tableName + " where " + TABLE_ID + " = " + id, null);
+    }
+
+    public Long getAdd(Message_Rubbish_Info mInfo) {
+        ContentValues mValues = new ContentValues();
+        mValues.put(MESSAGE_RUBBISH_CONTENT, mInfo.getMessage_rubbish_content());
+        mValues.put(MESSAGE_RUBBISH_PHONE, mInfo.getMessage_rubbish_phone());
+        mValues.put(MESSAGE_RUBBISH_TIME, mInfo.getMessage_rubbish_time());
+        long rowId = mSQLiteDatabase.insert(MESSAGE_RUBBISH_TABLE_NAME, null, mValues);
+        return rowId;
+    }
+
+    public Long getAdd(Message_Forbid_Info mInfo) {
+        ContentValues mValues = new ContentValues();
+        mValues.put(MESSAGE_FORBID_PHONE, mInfo.getMessage_forbid_phone());
+        long rowId = mSQLiteDatabase.insert(MESSAGE_FORBID_TABLE_NAME, null, mValues);
+        return rowId;
+    }
+
+    public Long getAdd(Call_Forbid_Info mInfo) {
+        ContentValues mValues = new ContentValues();
+        mValues.put(CALL_FORBID_PHONE, mInfo.getCall_forbid_phone());
+        long rowId = mSQLiteDatabase.insert(CALL_FORBID_TABLE_NAME, null, mValues);
+        return rowId;
+    }
+
+    public Long getAdd(Call_Record_Info mInfo) {
+        ContentValues mValues = new ContentValues();
+        mValues.put(CALL_RECORD_AREA, mInfo.getCall_record_area());
+        mValues.put(CALL_RECORD_PHONE, mInfo.getCall_record_phone());
+        mValues.put(CALL_RECORD_TIME, mInfo.getCall_record_time());
+        long rowId = mSQLiteDatabase.insert(CALL_RECORD_TABLE_NAME, null, mValues);
+        return rowId;
+    }
+
+    public boolean getDel(long rowId, String table) {
+        return mSQLiteDatabase.delete(table, TABLE_ID + "=" + rowId, null) > 0;
+    }
+
+    public boolean getDel(String table, String column, String phone) {
+        return mSQLiteDatabase.delete(table, column + "=?", new String[]{phone}) > 0;
+    }
+
+    public void deleteTable(String tableName) {
+        mSQLiteDatabase.execSQL("delete from " + tableName);
+    }
+
+    private static class DatabaseHelper extends SQLiteOpenHelper {
+
+        StringBuilder mStringBuilder_1;
+        StringBuilder mStringBuilder_2;
+        StringBuilder mStringBuilder_3;
+        StringBuilder mStringBuilder_4;
+
+        public DatabaseHelper(Context context) {
+            super(context, DB, null, DB_VERSION);
+        }
+
+        public void initCreateSQL() {
+            mStringBuilder_1 = new StringBuilder();
+            mStringBuilder_1.delete(0, mStringBuilder_1.length());
+            Log.d(TAG, "initCreateSQL");
+            mStringBuilder_1.append("create table ");
+            mStringBuilder_1.append(MESSAGE_RUBBISH_TABLE_NAME);
+            mStringBuilder_1.append("(");
+            mStringBuilder_1.append(TABLE_ID);
+            mStringBuilder_1.append(" integer primary key AUTOINCREMENT,");
+            mStringBuilder_1.append(MESSAGE_RUBBISH_PHONE);
+            mStringBuilder_1.append(" text ,");
+            mStringBuilder_1.append(MESSAGE_RUBBISH_TIME);
+            mStringBuilder_1.append(" text ,");
+            mStringBuilder_1.append(MESSAGE_RUBBISH_CONTENT);
+            mStringBuilder_1.append(" text ");
+            mStringBuilder_1.append(" );");
+            Log.d(TAG, "MESSAGE_RUBBISH_TABLE_NAME");
+            mStringBuilder_2 = new StringBuilder();
+            mStringBuilder_2.append("create table ");
+            mStringBuilder_2.append(MESSAGE_FORBID_TABLE_NAME);
+            mStringBuilder_2.append("( ");
+            mStringBuilder_2.append(TABLE_ID);
+            mStringBuilder_2.append(" integer primary key AUTOINCREMENT,");
+            mStringBuilder_2.append(MESSAGE_FORBID_PHONE);
+            mStringBuilder_2.append(" text");
+            mStringBuilder_2.append(" );");
+            Log.d(TAG, "MESSAGE_FORBID_TABLE_NAME");
+            mStringBuilder_3 = new StringBuilder();
+            mStringBuilder_3.append("create table ");
+            mStringBuilder_3.append(CALL_RECORD_TABLE_NAME);
+            mStringBuilder_3.append("( ");
+            mStringBuilder_3.append(TABLE_ID);
+            mStringBuilder_3.append(" integer primary key AUTOINCREMENT,");
+            mStringBuilder_3.append(CALL_RECORD_PHONE);
+            mStringBuilder_3.append(" text,");
+            mStringBuilder_3.append(CALL_RECORD_TIME);
+            mStringBuilder_3.append(" text,");
+            mStringBuilder_3.append(CALL_RECORD_AREA);
+            mStringBuilder_3.append(" text ");
+            mStringBuilder_3.append(" );");
+            Log.d(TAG, "CALL_RECORD_TABLE_NAME");
+            mStringBuilder_4 = new StringBuilder();
+            mStringBuilder_4.append("create table ");
+            mStringBuilder_4.append(CALL_FORBID_TABLE_NAME);
+            mStringBuilder_4.append("( ");
+            mStringBuilder_4.append(TABLE_ID);
+            mStringBuilder_4.append(" integer primary key AUTOINCREMENT,");
+            mStringBuilder_4.append(CALL_FORBID_PHONE);
+            mStringBuilder_4.append(" text");
+            mStringBuilder_4.append(" );");
+            Log.d(TAG, "CALL_FORBID_TABLE_NAME");
+
+        }
+
+        @Override
+        public void onCreate(SQLiteDatabase db) {
+            Log.d(TAG, "onCreate");
+            Log.d(TAG, "mStringBuilder");
+
+            initCreateSQL();
+            db.execSQL(mStringBuilder_1.toString());
+            Log.d(TAG, mStringBuilder_1.toString());
+            db.execSQL(mStringBuilder_2.toString());
+            Log.d(TAG, mStringBuilder_2.toString());
+            db.execSQL(mStringBuilder_3.toString());
+            Log.d(TAG, mStringBuilder_3.toString());
+            db.execSQL(mStringBuilder_4.toString());
+            Log.d(TAG, mStringBuilder_4.toString());
+        }
+
+        @Override
+        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+            db.execSQL("drop table if exists" + MESSAGE_RUBBISH_TABLE_NAME, null);
+            Log.d(TAG, "onUpgrade");
+        }
+
+    }
 }

+ 17 - 17
app/src/main/java/me/yoqi/mobile/handler/PhoneNumberXml.java

@@ -1,26 +1,26 @@
 package me.yoqi.mobile.handler;
 
+import android.util.Log;
+
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
 
-import android.util.Log;
-
 public class PhoneNumberXml extends DefaultHandler {
-	public static String mPhoneNumberStr;
-	
-	@Override
-	public void setDocumentLocator(Locator locator) {
-		super.setDocumentLocator(locator);
-		mPhoneNumberStr = "";
-	}
+    public static String mPhoneNumberStr;
+
+    @Override
+    public void setDocumentLocator(Locator locator) {
+        super.setDocumentLocator(locator);
+        mPhoneNumberStr = "";
+    }
+
+    @Override
+    public void characters(char[] ch, int start, int length)
+            throws SAXException {
+        super.characters(ch, start, length);
+        Log.d("phonenumber", "xml data is " + new String(ch, start, length));
+        mPhoneNumberStr += "\n" + new String(ch, start, length);
+    }
 
-	@Override
-	public void characters(char[] ch, int start, int length)
-			throws SAXException {
-		super.characters(ch, start, length);
-		Log.d("phonenumber","xml data is "+new String(ch,start,length));
-		mPhoneNumberStr += "\n"+new String(ch,start,length);
-	}
-	
 }

+ 7 - 9
app/src/main/java/me/yoqi/mobile/info/Call_Forbid_Info.java

@@ -1,15 +1,13 @@
 package me.yoqi.mobile.info;
 
 public class Call_Forbid_Info {
-	private String call_forbid_phone;
+    private String call_forbid_phone;
 
-	public String getCall_forbid_phone() {
-		return call_forbid_phone;
-	}
-
-	public void setCall_forbid_phone(String callForbidPhone) {
-		call_forbid_phone = callForbidPhone;
-	}
-	
+    public String getCall_forbid_phone() {
+        return call_forbid_phone;
+    }
 
+    public void setCall_forbid_phone(String callForbidPhone) {
+        call_forbid_phone = callForbidPhone;
+    }
 }

+ 502 - 474
app/src/main/java/me/yoqi/mobile/safe/CallActivity.java

@@ -1,7 +1,5 @@
 package me.yoqi.mobile.safe;
 
-import java.util.ArrayList;
-
 import android.app.AlertDialog;
 import android.app.TabActivity;
 import android.content.BroadcastReceiver;
@@ -36,483 +34,513 @@ import android.widget.RelativeLayout;
 import android.widget.TabHost;
 import android.widget.TabHost.OnTabChangeListener;
 import android.widget.Toast;
+
+import java.util.ArrayList;
+
 import me.yoqi.mobile.db.DbAdapter;
 import me.yoqi.mobile.info.Call_Forbid_Info;
 import me.yoqi.mobile.tool.BroadCastTool;
 
+public class CallActivity extends TabActivity implements OnTabChangeListener {
 
+    private me.yoqi.mobile.db.DbAdapter mDbAdapter;
+    private Cursor mCursorTab1;
+    private Cursor mCursorTab2;
+    private ListView mListViewTab1;
+    private ListView mListViewTab2;
+    private static final int MENU_RUBBISH_BACK = Menu.FIRST;
+    private static final int MENU_RUBBISH_REPLY = Menu.FIRST + 1;
+    private static final int MENU_RUBBISH_CALL = Menu.FIRST + 2;
+    private static final int MENU_RUBBISH_DELETE = Menu.FIRST + 3;
+    private static final int MENU_RUBBISH_CLEAR = Menu.FIRST + 4;
 
-public class CallActivity extends TabActivity implements OnTabChangeListener {
-	
-	private me.yoqi.mobile.db.DbAdapter mDbAdapter;
-	private Cursor mCursorTab1;
-	private Cursor mCursorTab2;
-	private ListView mListViewTab1;
-	private ListView mListViewTab2;
-	private static final int MENU_RUBBISH_BACK = Menu.FIRST;
-	private static final int MENU_RUBBISH_REPLY = Menu.FIRST+1;
-	private static final int MENU_RUBBISH_CALL = Menu.FIRST+2;
-	private static final int MENU_RUBBISH_DELETE = Menu.FIRST+3;
-	private static final int MENU_RUBBISH_CLEAR = Menu.FIRST+4;
-	
-	private static final int MENU_FORBID_REPLY = Menu.FIRST+5;
-	private static final int MENU_FORBID_CALL = Menu.FIRST+6;
-	private static final int MENU_FORBID_DELETE = Menu.FIRST+7;
-	private static final int MENU_FORBID_CLEAR = Menu.FIRST+8;
-	private static final int MENU_FORBID_ADD = Menu.FIRST+9;
-	private static final int MENU_FORBID_ADD_FIRST = Menu.FIRST+10;
-	
-	@Override
-	protected void onCreate(Bundle savedInstanceState) {
-		super.onCreate(savedInstanceState);
-		setContentView(R.layout.tabhost_public);
-		initFindViewById();
-		TabHost mTabHost=getTabHost();
-		mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("拦截记录",getResources().getDrawable(R.drawable.tab_icon_1)).setContent(R.id.tabhost_public_listview));
-		mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("黑名单",getResources().getDrawable(R.drawable.tab_icon_2)).setContent(R.id.tabhost_public_listview_tab2));
-		mTabHost.setOnTabChangedListener(this);
-		mTabHost.setCurrentTab(0);
-
-		mDbAdapter = new DbAdapter(CallActivity.this);
-		mDbAdapter.open();
-		
-		initTab1Data();
-	}
-	
-	private MyBroadCastReceiver mMBCR;
-	private IntentFilter mIF;
-	@Override
-	protected void onResume(){
-		super.onResume();
-		mIF = new IntentFilter();
-		mIF.addAction(BroadCastTool.CALL_RECEIVED_ACTION);
-		mMBCR = new MyBroadCastReceiver();
-		this.registerReceiver(mMBCR, mIF);
-	}
-	
-	@Override
-	protected void onDestroy(){
-		super.onDestroy();
-		this.unregisterReceiver(mMBCR);
-		mDbAdapter.close();
-	}
-	/** 打電話*/
-	Intent mIntent;
-	private void actionCALL(int position, Cursor c,String column){
-		c.moveToPosition(position);
-		Uri uri = Uri.parse("tel:"+c.getString(c.getColumnIndex(column)));
-		mIntent = new Intent(Intent.ACTION_CALL, uri);   
-		startActivity(mIntent);   
-	}
-	/**發短信 */
-	private void actionSMS(int position, Cursor c,String column){
-		c.moveToPosition(position);
-		mIntent = new Intent(Intent.ACTION_VIEW);
-		mIntent.putExtra("address", c.getString(c.getColumnIndex(column)));
-		mIntent.setType("vnd.android-dir/mms-sms");
-		startActivity(mIntent);   
-	}
-	/** 刪除標記*/
-	private void delMarkItemData(ListView lv,Cursor c,String table){
-		int mContant = lv.getCount();
-		for(int i=0;i!=mContant;i++){
-			if(lv.getCheckedItemPositions().get(i)){
-				c.moveToPosition(i);
-				long rowId = c.getLong(c.getColumnIndex(DbAdapter.TABLE_ID));
-				mDbAdapter.getDel(rowId, table);
-			}
-		}
-	}
-	
-	private String getPhoneNumber(int position,Cursor c){		
-		c.moveToPosition(position);
-		return c.getString(c.getColumnIndex(DbAdapter.CALL_RECORD_PHONE)); 
-	}
-	
-	EditText mCallName;
-	EditText mCallNumber;
-	private void addContact(String phone){
-		LayoutInflater mLI = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-		LinearLayout mLL = (LinearLayout)mLI.inflate(R.layout.set_call_record_name, null);
-		mCallName = (EditText)mLL.findViewById(R.id.EditText01);
-		mCallNumber = (EditText)mLL.findViewById(R.id.EditText02);
-		mCallNumber.setText(phone);
-		new AlertDialog.Builder(this).setTitle("加入联系人").
-		setView(mLL).
-		setPositiveButton("确定", new OnClickListener() {
-			@Override
-			public void onClick(DialogInterface dialog, int which) {
-				if(mCallName.getText().toString().length() != 0&&mCallNumber.getText().toString().length() != 0){
-					
-					ContentValues cv = new ContentValues();
-					ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
-					ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
-					builder.withValues(cv);
-					operationList.add(builder.build());
-					builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
-					builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
-	                builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
-	                builder.withValue(StructuredName.DISPLAY_NAME, mCallName.getText().toString());
-	                operationList.add(builder.build());
-	                builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
-	                builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
-	                builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
-	                builder.withValue(Phone.NUMBER, mCallNumber.getText().toString());
-	                builder.withValue(Data.IS_PRIMARY, 1);
-	                operationList.add(builder.build());
-	                try {
-	                	getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
-					} catch (RemoteException e) {
-						e.printStackTrace();
-					} catch (OperationApplicationException e) {
-						e.printStackTrace();
-					}
-					Toast.makeText(getApplicationContext(), "成功添加!", Toast.LENGTH_SHORT).show();
-				}else{
-					Toast.makeText(getApplicationContext(), "姓名或号码不能为空!", Toast.LENGTH_SHORT).show();
-					addContact(mCallNumber.getText().toString());
-				}
-			}
-		}).setNegativeButton("取消", null).create().show();
-	}
-	
-	/** 多选时打电话只拨打第一个被选中的号码,发短信给第一个被选中的号码发送*/
-	private void callMethod(ListView lv,String sms_call,Cursor c,String column,String addContact){
-		if(lv.getCheckedItemPositions().size() >= 1){
-			for(int i=0;i!=lv.getCount();i++){
-				if(lv.getCheckedItemPositions().get(i)){
-					c.moveToPosition(i);
-					String phone = c.getString(c.getColumnIndex(column));
-					if(sms_call.equals("sms")){
-						if("addContact".equals(addContact)){
-							addContact(phone);
-						}else{
-							mIntent = new Intent(Intent.ACTION_VIEW);
-							mIntent.putExtra("address", phone);
-							mIntent.setType("vnd.android-dir/mms-sms");
-							startActivity(mIntent);  
-						} 
-					}else if(sms_call.equals("call")){
-						if("addContact".equals(addContact)){
-							addContact(phone);
-						}else{
-							Uri uri = Uri.parse("tel:"+phone);
-							mIntent = new Intent(Intent.ACTION_DIAL, uri);   
-							startActivity(mIntent);
-						}
-					}
-					break;
-				}
-			}
-		}
-	}
-	
-	/**-------------------------------初始化基本组件--------------------------------------------------------------------------------------------------*/
-	private void initFindViewById(){
-		mListViewTab1 = (ListView)findViewById(R.id.tabhost_public_listview);
-		mListViewTab2 = (ListView)findViewById(R.id.tabhost_public_listview_tab2);
-	}
-	
-	/**-------------------------------点击不同标签时的事件监听 ----------------------------------------------------------------------------------*/
-	private boolean isCheckedTab1OrTab2 = false;
-	public void onTabChanged(String tabId) {
-		if("tab1".equals(tabId)){
-			isCheckedTab1OrTab2 = false;
-			initTab1Data();
-		}else if("tab2".equals(tabId)){
-			isCheckedTab1OrTab2 = true;
-			initTab2Data();
-		}
-	}
-	
-	private int i = 0;
-	/**---------------------------------------------从数据库中获得并加载垃圾短信数据Start-------------------------------------------------*/
-	
-	private void initTab1Data(){
-		mCursorTab1=mDbAdapter.getAll(DbAdapter.CALL_RECORD_TABLE_NAME)	;
-		this.stopManagingCursor(mCursorTab1);
-		i = 0;
-		int mCount = mCursorTab1.getCount();
-		if(mCount >= 0){
-			mArray = new String[mCount];
-			if(mCursorTab1.moveToFirst()){
-				do{
-					mArray[i] = "垃圾号码:"+mCursorTab1.getString(mCursorTab1.getColumnIndex(DbAdapter.CALL_RECORD_PHONE))+"\n"+
-										 "来电时间:"+mCursorTab1.getString(mCursorTab1.getColumnIndex(DbAdapter.CALL_RECORD_TIME));
-					i++;
-				}while(mCursorTab1.moveToNext());
-			}
-			ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(CallActivity.this,android.R.layout.simple_list_item_checked,mArray);
-			mListViewTab1.setAdapter(mAdapter);
-			mListViewTab1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
-		}
-		
-	}
-	
-	String[] mArray;
-	private void initTab2Data(){
-		mCursorTab2 = mDbAdapter.getAll(DbAdapter.CALL_FORBID_TABLE_NAME);
-		this.startManagingCursor(mCursorTab2);		
-		i = 0;
-		int mCount = mCursorTab2.getCount();
-		if(mCount >= 0){
-			mArray = new String[mCount];
-			if(mCursorTab2.moveToFirst()){
-				do{
-					mArray[i] = mCursorTab2.getString(mCursorTab2.getColumnIndex(DbAdapter.CALL_FORBID_PHONE));
-					i++;
-				}while(mCursorTab2.moveToNext());
-			}
-			ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(CallActivity.this,android.R.layout.simple_list_item_checked,mArray);
-			mListViewTab2.setAdapter(mAdapter);
-			mListViewTab2.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
-		}
-		
-	}
-	/*---------------------------------------------从数据库中获得并加载垃圾短信数据End----------------------------------------------------*/
-	
-	/*--------------------------------------------------------------------------------------关于动态菜单Begin---------------------------------------*/
-	boolean isCreatePreparedOptionMenu1 = true;
-	boolean isCreatePreparedOptionMenu2 = false;
-	boolean isCreatePreparedOptionMenu3 = false;
-	@Override
-	public boolean onPrepareOptionsMenu(Menu menu) {
-		if(isCheckedTab1OrTab2 == false){
-			isCreatePreparedOptionMenu3 = false;
-			if(mListViewTab1.getCount()>0){
-				if(isCreatePreparedOptionMenu1){
-					menu.add(0, MENU_RUBBISH_REPLY, 0, "回复").setIcon(android.R.drawable.ic_menu_send);
-					menu.add(0, MENU_RUBBISH_CALL, 0, "拨打").setIcon(android.R.drawable.ic_menu_call);
-					menu.add(0, MENU_RUBBISH_DELETE, 0, "删除").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
-					menu.add(0, MENU_RUBBISH_CLEAR, 0, "清空").setIcon(android.R.drawable.ic_menu_delete);
-					menu.add(0, MENU_RUBBISH_BACK, 0, "加入联系人").setIcon(android.R.drawable.ic_menu_add);
-					isCreatePreparedOptionMenu1 = false;
-				}
-			}else{
-				menu.removeItem(MENU_RUBBISH_BACK);
-				menu.removeItem(MENU_RUBBISH_REPLY);
-				menu.removeItem(MENU_RUBBISH_CALL);
-				menu.removeItem(MENU_RUBBISH_DELETE);
-				menu.removeItem(MENU_RUBBISH_CLEAR);
-				isCreatePreparedOptionMenu1 = true;
-			}
-		}else{
-			menu.removeItem(MENU_RUBBISH_BACK);
-			menu.removeItem(MENU_RUBBISH_REPLY);
-			menu.removeItem(MENU_RUBBISH_CALL);
-			menu.removeItem(MENU_RUBBISH_DELETE);
-			menu.removeItem(MENU_RUBBISH_CLEAR);
-			isCreatePreparedOptionMenu1 = true;
-		}
-		
-		if(isCheckedTab1OrTab2 == true){
-			if(mListViewTab2.getCount()>0){
-				if(!isCreatePreparedOptionMenu2){
-					menu.add(0, MENU_FORBID_ADD, 0, "添加").setIcon(android.R.drawable.ic_menu_add);
-					menu.add(0, MENU_FORBID_REPLY, 0, "回复").setIcon(android.R.drawable.ic_menu_send);
-					menu.add(0, MENU_FORBID_CALL, 0, "拨打").setIcon(android.R.drawable.ic_menu_call);
-					menu.add(0, MENU_FORBID_DELETE, 0, "删除").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
-					menu.add(0, MENU_FORBID_CLEAR, 0, "清空").setIcon(android.R.drawable.ic_menu_delete);
-					isCreatePreparedOptionMenu2 = true;
-				}
-				menu.removeItem(MENU_FORBID_ADD_FIRST);
-				isCreatePreparedOptionMenu3 = false;
-			}else{
-				if(!isCreatePreparedOptionMenu3){
-					menu.add(0, MENU_FORBID_ADD_FIRST, 0, "添加").setIcon(android.R.drawable.ic_menu_add);
-					isCreatePreparedOptionMenu3 = true;
-				}
-				menu.removeItem(MENU_FORBID_REPLY);
-				menu.removeItem(MENU_FORBID_CALL);
-				menu.removeItem(MENU_FORBID_DELETE);
-				menu.removeItem(MENU_FORBID_CLEAR);
-				menu.removeItem(MENU_FORBID_ADD);
-				isCreatePreparedOptionMenu2 = false;
-			}
-		}else{
-			menu.removeItem(MENU_FORBID_REPLY);
-			menu.removeItem(MENU_FORBID_CALL);
-			menu.removeItem(MENU_FORBID_DELETE);
-			menu.removeItem(MENU_FORBID_CLEAR);
-			menu.removeItem(MENU_FORBID_ADD);
-			menu.removeItem(MENU_FORBID_ADD_FIRST);
-			isCreatePreparedOptionMenu2 = false;
-		}
-		return super.onPrepareOptionsMenu(menu);
-	}
-
-	@Override
-	public boolean onOptionsItemSelected(MenuItem item) {
-		int positionTab1 = mListViewTab1.getSelectedItemPosition();
-		int positionTab2 = mListViewTab2.getSelectedItemPosition();
-		switch(item.getItemId()){
-		case MENU_RUBBISH_REPLY:
-			if(positionTab1 != -1){
-				actionSMS(positionTab1,mCursorTab1,DbAdapter.CALL_RECORD_PHONE);
-			}else{
-				callMethod(mListViewTab1,"sms",mCursorTab1,DbAdapter.CALL_RECORD_PHONE,"");
-			}
-			break;
-		case MENU_RUBBISH_CALL:
-			if(positionTab1 != -1){
-				actionCALL(positionTab1,mCursorTab1,DbAdapter.CALL_RECORD_PHONE);
-			}else{
-				callMethod(mListViewTab1,"call",mCursorTab1,DbAdapter.CALL_RECORD_PHONE,"");
-			}
-			break;
-		case MENU_RUBBISH_DELETE:
-			if(positionTab1 != -1){
-				mCursorTab1.moveToPosition(positionTab1);
-				long rowId = mCursorTab1.getLong(mCursorTab1.getColumnIndex(DbAdapter.TABLE_ID));
-				mDbAdapter.getDel(rowId, DbAdapter.CALL_RECORD_TABLE_NAME);
-			}else{
-				delMarkItemData(mListViewTab1,mCursorTab1,DbAdapter.CALL_RECORD_TABLE_NAME);
-			}
-			initTab1Data();
-			break;
-		case MENU_RUBBISH_CLEAR:
-			mDbAdapter.deleteTable(DbAdapter.CALL_RECORD_TABLE_NAME);
-			initTab1Data();
-			break;
-		case MENU_RUBBISH_BACK:
-			if(positionTab1 != -1){
-				addContact(getPhoneNumber(positionTab1, mCursorTab1));
-			}else{
-				callMethod(mListViewTab1,"sms",mCursorTab1,DbAdapter.CALL_RECORD_PHONE,"addContact");
-			}
-			break;
-		case MENU_FORBID_ADD:
-		case MENU_FORBID_ADD_FIRST:
-			addForbidPhone();
-			break;
-		case MENU_FORBID_REPLY:
-			if(positionTab2 != -1){
-				actionSMS(positionTab2,mCursorTab2,DbAdapter.CALL_FORBID_PHONE);
-			}else{
-				callMethod(mListViewTab2,"sms",mCursorTab2,DbAdapter.CALL_FORBID_PHONE,"");
-			}
-			break;
-		case MENU_FORBID_CALL:
-			if(positionTab2 != -1){
-				actionCALL(positionTab2,mCursorTab2,DbAdapter.CALL_FORBID_PHONE);
-			}else{
-				callMethod(mListViewTab2,"call",mCursorTab2,DbAdapter.CALL_FORBID_PHONE,"");
-			}
-			break;
-		case MENU_FORBID_DELETE:
-			if(positionTab2 != -1){
-				mCursorTab2.moveToPosition(positionTab2);
-				long rowId = mCursorTab2.getLong(mCursorTab2.getColumnIndex(DbAdapter.TABLE_ID));
-				mDbAdapter.getDel(rowId, DbAdapter.CALL_FORBID_TABLE_NAME);
-			}else{
-				delMarkItemData(mListViewTab2,mCursorTab2,DbAdapter.CALL_FORBID_TABLE_NAME);
-			}
-			initTab2Data();
-			break;
-		case MENU_FORBID_CLEAR:
-			mDbAdapter.deleteTable(DbAdapter.CALL_FORBID_TABLE_NAME);
-			initTab2Data();
-			break;
-				
-		}
-		return super.onOptionsItemSelected(item);
-	}
-	/*--------------------------------------------------------------------------------------关于动态菜单End----------------------------------------------*/
-	
-	/*--------------------------------------------------------------------------------------接收到垃圾短信时的广播接收器Begin------------------*/
-	class MyBroadCastReceiver extends BroadcastReceiver{
-		@Override
-		public void onReceive(Context context, Intent intent) {
-			if(intent.getAction().equals(BroadCastTool.CALL_RECEIVED_ACTION)){
-				initTab1Data();
-			}
-		}
-	}
-	/*--------------------------------------------------------------------------------------接收到垃圾短信时的广播接收器End---------------------*/
-	
-	/**---------------------------------------------------------------------------------------添加黑名单的Dialog-------------------------------------------*/
-	EditText mForbidPhone ;
-	private void addForbidPhone(){
-		LayoutInflater mLI = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-		RelativeLayout mRL = (RelativeLayout)mLI.inflate(R.layout.message_forbid_add, null);
-		mForbidPhone = (EditText)mRL.findViewById(R.id.new_forbid_phone);
-		Button mButton=(Button)mRL.findViewById(R.id.get_system_contact);
-		mButton.setOnClickListener(new View.OnClickListener() {
-			
-			@Override
-			public void onClick(View v) {
-				showMulitAlertDialog();
-			}
-		});
-		new AlertDialog.Builder(CallActivity.this).setTitle("添加黑名单").setView(mRL)
-		.setPositiveButton("确定", new OnClickListener(){
-			public void onClick(DialogInterface arg0, int arg1) {
-				String mNewForbidPhone = mForbidPhone.getText().toString();
-				if(mNewForbidPhone.length() < 3){
-					Toast.makeText(CallActivity.this, "输入错误!", Toast.LENGTH_SHORT).show();
-				}else{
-					String mStr[] = mNewForbidPhone.split(";");
-					for(int i = 0;i != mStr.length;i++){
-						String phone = mStr[i].split(":").length == 1?mStr[i].split(":")[0]:mStr[i].split(":")[1];
-						if(!(mDbAdapter.getPhone(phone, 4)).moveToFirst()){
-							Call_Forbid_Info mCFI = new Call_Forbid_Info();
-							mCFI.setCall_forbid_phone(phone);
-							mDbAdapter.getAdd(mCFI);
-						}else{
-							Toast.makeText(CallActivity.this, "号码"+phone+"已存在!", Toast.LENGTH_SHORT).show();
-						}
-					}
-					initTab2Data();
-					Toast.makeText(CallActivity.this, "添加成功!", Toast.LENGTH_SHORT).show();
-				}
-			}
-		}).setNegativeButton("取消", null).show();
-	}
-	
-	private ListView mLV;
-	@SuppressWarnings("deprecation")
-	private void showMulitAlertDialog(){
-		Cursor mCursor=getContentResolver().query(Phones.CONTENT_URI, new String[]{"_id","name","number"}, null, null, "number desc");
-		startManagingCursor(mCursor);
-		
-		if(mCursor.moveToFirst()){
-			int m = 0;
-			String mContant[] = new String[mCursor.getCount()];
-			do{
-				String phoneNumber = mCursor.getString(mCursor.getColumnIndex(Phones.NUMBER));
-				mContant[m] = mCursor.getString(mCursor.getColumnIndex(Phones.NAME))+":"+(phoneNumber.length() == 13?phoneNumber.substring(2):phoneNumber);
-				m++;
-			}while(mCursor.moveToNext());
-			initListData(mContant);
-		}
-		
-	}
-	
-	String checkInfo;
-	private void initListData(final String[] contant){
-		AlertDialog mAlertDialog=new AlertDialog.Builder(this).setMultiChoiceItems(contant,
-				new boolean[contant.length], 
-				new DialogInterface.OnMultiChoiceClickListener() {
-					
-					@Override
-					public void onClick(DialogInterface dialog, int which, boolean isChecked) {
-						
-					}
-				}).setPositiveButton("确定", new DialogInterface.OnClickListener() {	
-					
-					@Override
-					public void onClick(DialogInterface dialog, int which) {
-						checkInfo = "";
-						for(int i=0;i!=contant.length;i++){
-							if(mLV.getCheckedItemPositions().get(i)){
-								checkInfo += mLV.getAdapter().getItem(i).toString()+";";
-							}
-						}
-						mForbidPhone.setText(checkInfo.substring(0, checkInfo.length()));
-					}
-				}).setNegativeButton("取消", null).create();
-		mLV=mAlertDialog.getListView();
-		mAlertDialog.show();
-	}
+    private static final int MENU_FORBID_REPLY = Menu.FIRST + 5;
+    private static final int MENU_FORBID_CALL = Menu.FIRST + 6;
+    private static final int MENU_FORBID_DELETE = Menu.FIRST + 7;
+    private static final int MENU_FORBID_CLEAR = Menu.FIRST + 8;
+    private static final int MENU_FORBID_ADD = Menu.FIRST + 9;
+    private static final int MENU_FORBID_ADD_FIRST = Menu.FIRST + 10;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.tabhost_public);
+        initFindViewById();
+        TabHost mTabHost = getTabHost();
+        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("拦截记录", getResources().getDrawable(R.drawable.tab_icon_1)).setContent(R.id.tabhost_public_listview));
+        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("黑名单", getResources().getDrawable(R.drawable.tab_icon_2)).setContent(R.id.tabhost_public_listview_tab2));
+        mTabHost.setOnTabChangedListener(this);
+        mTabHost.setCurrentTab(0);
+
+        mDbAdapter = new DbAdapter(CallActivity.this);
+        mDbAdapter.open();
+
+        initTab1Data();
+    }
+
+    private MyBroadCastReceiver mMBCR;
+    private IntentFilter mIF;
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mIF = new IntentFilter();
+        mIF.addAction(BroadCastTool.CALL_RECEIVED_ACTION);
+        mMBCR = new MyBroadCastReceiver();
+        this.registerReceiver(mMBCR, mIF);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        this.unregisterReceiver(mMBCR);
+        mDbAdapter.close();
+    }
+
+    /**
+     * 打電話
+     */
+    Intent mIntent;
+
+    private void actionCALL(int position, Cursor c, String column) {
+        c.moveToPosition(position);
+        Uri uri = Uri.parse("tel:" + c.getString(c.getColumnIndex(column)));
+        mIntent = new Intent(Intent.ACTION_CALL, uri);
+        startActivity(mIntent);
+    }
+
+    /**
+     * 發短信
+     */
+    private void actionSMS(int position, Cursor c, String column) {
+        c.moveToPosition(position);
+        mIntent = new Intent(Intent.ACTION_VIEW);
+        mIntent.putExtra("address", c.getString(c.getColumnIndex(column)));
+        mIntent.setType("vnd.android-dir/mms-sms");
+        startActivity(mIntent);
+    }
+
+    /**
+     * 刪除標記
+     */
+    private void delMarkItemData(ListView lv, Cursor c, String table) {
+        int mContant = lv.getCount();
+        for (int i = 0; i != mContant; i++) {
+            if (lv.getCheckedItemPositions().get(i)) {
+                c.moveToPosition(i);
+                long rowId = c.getLong(c.getColumnIndex(DbAdapter.TABLE_ID));
+                mDbAdapter.getDel(rowId, table);
+            }
+        }
+    }
+
+    private String getPhoneNumber(int position, Cursor c) {
+        c.moveToPosition(position);
+        return c.getString(c.getColumnIndex(DbAdapter.CALL_RECORD_PHONE));
+    }
+
+    EditText mCallName;
+    EditText mCallNumber;
+
+    private void addContact(String phone) {
+        LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        LinearLayout mLL = (LinearLayout) mLI.inflate(R.layout.set_call_record_name, null);
+        mCallName = (EditText) mLL.findViewById(R.id.EditText01);
+        mCallNumber = (EditText) mLL.findViewById(R.id.EditText02);
+        mCallNumber.setText(phone);
+        new AlertDialog.Builder(this).setTitle("加入联系人").
+                setView(mLL).
+                setPositiveButton("确定", new OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        if (mCallName.getText().toString().length() != 0 && mCallNumber.getText().toString().length() != 0) {
+
+                            ContentValues cv = new ContentValues();
+                            ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
+                            ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
+                            builder.withValues(cv);
+                            operationList.add(builder.build());
+                            builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
+                            builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
+                            builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
+                            builder.withValue(StructuredName.DISPLAY_NAME, mCallName.getText().toString());
+                            operationList.add(builder.build());
+                            builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
+                            builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
+                            builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
+                            builder.withValue(Phone.NUMBER, mCallNumber.getText().toString());
+                            builder.withValue(Data.IS_PRIMARY, 1);
+                            operationList.add(builder.build());
+                            try {
+                                getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
+                            } catch (RemoteException e) {
+                                e.printStackTrace();
+                            } catch (OperationApplicationException e) {
+                                e.printStackTrace();
+                            }
+                            Toast.makeText(getApplicationContext(), "成功添加!", Toast.LENGTH_SHORT).show();
+                        } else {
+                            Toast.makeText(getApplicationContext(), "姓名或号码不能为空!", Toast.LENGTH_SHORT).show();
+                            addContact(mCallNumber.getText().toString());
+                        }
+                    }
+                }).setNegativeButton("取消", null).create().show();
+    }
+
+    /**
+     * 多选时打电话只拨打第一个被选中的号码,发短信给第一个被选中的号码发送
+     */
+    private void callMethod(ListView lv, String sms_call, Cursor c, String column, String addContact) {
+        if (lv.getCheckedItemPositions().size() >= 1) {
+            for (int i = 0; i != lv.getCount(); i++) {
+                if (lv.getCheckedItemPositions().get(i)) {
+                    c.moveToPosition(i);
+                    String phone = c.getString(c.getColumnIndex(column));
+                    if (sms_call.equals("sms")) {
+                        if ("addContact".equals(addContact)) {
+                            addContact(phone);
+                        } else {
+                            mIntent = new Intent(Intent.ACTION_VIEW);
+                            mIntent.putExtra("address", phone);
+                            mIntent.setType("vnd.android-dir/mms-sms");
+                            startActivity(mIntent);
+                        }
+                    } else if (sms_call.equals("call")) {
+                        if ("addContact".equals(addContact)) {
+                            addContact(phone);
+                        } else {
+                            Uri uri = Uri.parse("tel:" + phone);
+                            mIntent = new Intent(Intent.ACTION_DIAL, uri);
+                            startActivity(mIntent);
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+    }
+
+    /**
+     * -------------------------------初始化基本组件--------------------------------------------------------------------------------------------------
+     */
+    private void initFindViewById() {
+        mListViewTab1 = (ListView) findViewById(R.id.tabhost_public_listview);
+        mListViewTab2 = (ListView) findViewById(R.id.tabhost_public_listview_tab2);
+    }
+
+    /**
+     * -------------------------------点击不同标签时的事件监听 ----------------------------------------------------------------------------------
+     */
+    private boolean isCheckedTab1OrTab2 = false;
+
+    public void onTabChanged(String tabId) {
+        if ("tab1".equals(tabId)) {
+            isCheckedTab1OrTab2 = false;
+            initTab1Data();
+        } else if ("tab2".equals(tabId)) {
+            isCheckedTab1OrTab2 = true;
+            initTab2Data();
+        }
+    }
+
+    private int i = 0;
+
+    /**
+     * ---------------------------------------------从数据库中获得并加载垃圾短信数据Start-------------------------------------------------
+     */
+
+    private void initTab1Data() {
+        mCursorTab1 = mDbAdapter.getAll(DbAdapter.CALL_RECORD_TABLE_NAME);
+        this.stopManagingCursor(mCursorTab1);
+        i = 0;
+        int mCount = mCursorTab1.getCount();
+        if (mCount >= 0) {
+            mArray = new String[mCount];
+            if (mCursorTab1.moveToFirst()) {
+                do {
+                    mArray[i] = "垃圾号码:" + mCursorTab1.getString(mCursorTab1.getColumnIndex(DbAdapter.CALL_RECORD_PHONE)) + "\n" +
+                            "来电时间:" + mCursorTab1.getString(mCursorTab1.getColumnIndex(DbAdapter.CALL_RECORD_TIME));
+                    i++;
+                } while (mCursorTab1.moveToNext());
+            }
+            ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(CallActivity.this, android.R.layout.simple_list_item_checked, mArray);
+            mListViewTab1.setAdapter(mAdapter);
+            mListViewTab1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+        }
+
+    }
+
+    String[] mArray;
+
+    private void initTab2Data() {
+        mCursorTab2 = mDbAdapter.getAll(DbAdapter.CALL_FORBID_TABLE_NAME);
+        this.startManagingCursor(mCursorTab2);
+        i = 0;
+        int mCount = mCursorTab2.getCount();
+        if (mCount >= 0) {
+            mArray = new String[mCount];
+            if (mCursorTab2.moveToFirst()) {
+                do {
+                    mArray[i] = mCursorTab2.getString(mCursorTab2.getColumnIndex(DbAdapter.CALL_FORBID_PHONE));
+                    i++;
+                } while (mCursorTab2.moveToNext());
+            }
+            ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(CallActivity.this, android.R.layout.simple_list_item_checked, mArray);
+            mListViewTab2.setAdapter(mAdapter);
+            mListViewTab2.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+        }
+
+    }
+    /*---------------------------------------------从数据库中获得并加载垃圾短信数据End----------------------------------------------------*/
+
+    /*--------------------------------------------------------------------------------------关于动态菜单Begin---------------------------------------*/
+    boolean isCreatePreparedOptionMenu1 = true;
+    boolean isCreatePreparedOptionMenu2 = false;
+    boolean isCreatePreparedOptionMenu3 = false;
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        if (isCheckedTab1OrTab2 == false) {
+            isCreatePreparedOptionMenu3 = false;
+            if (mListViewTab1.getCount() > 0) {
+                if (isCreatePreparedOptionMenu1) {
+                    menu.add(0, MENU_RUBBISH_REPLY, 0, "回复").setIcon(android.R.drawable.ic_menu_send);
+                    menu.add(0, MENU_RUBBISH_CALL, 0, "拨打").setIcon(android.R.drawable.ic_menu_call);
+                    menu.add(0, MENU_RUBBISH_DELETE, 0, "删除").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
+                    menu.add(0, MENU_RUBBISH_CLEAR, 0, "清空").setIcon(android.R.drawable.ic_menu_delete);
+                    menu.add(0, MENU_RUBBISH_BACK, 0, "加入联系人").setIcon(android.R.drawable.ic_menu_add);
+                    isCreatePreparedOptionMenu1 = false;
+                }
+            } else {
+                menu.removeItem(MENU_RUBBISH_BACK);
+                menu.removeItem(MENU_RUBBISH_REPLY);
+                menu.removeItem(MENU_RUBBISH_CALL);
+                menu.removeItem(MENU_RUBBISH_DELETE);
+                menu.removeItem(MENU_RUBBISH_CLEAR);
+                isCreatePreparedOptionMenu1 = true;
+            }
+        } else {
+            menu.removeItem(MENU_RUBBISH_BACK);
+            menu.removeItem(MENU_RUBBISH_REPLY);
+            menu.removeItem(MENU_RUBBISH_CALL);
+            menu.removeItem(MENU_RUBBISH_DELETE);
+            menu.removeItem(MENU_RUBBISH_CLEAR);
+            isCreatePreparedOptionMenu1 = true;
+        }
+
+        if (isCheckedTab1OrTab2 == true) {
+            if (mListViewTab2.getCount() > 0) {
+                if (!isCreatePreparedOptionMenu2) {
+                    menu.add(0, MENU_FORBID_ADD, 0, "添加").setIcon(android.R.drawable.ic_menu_add);
+                    menu.add(0, MENU_FORBID_REPLY, 0, "回复").setIcon(android.R.drawable.ic_menu_send);
+                    menu.add(0, MENU_FORBID_CALL, 0, "拨打").setIcon(android.R.drawable.ic_menu_call);
+                    menu.add(0, MENU_FORBID_DELETE, 0, "删除").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
+                    menu.add(0, MENU_FORBID_CLEAR, 0, "清空").setIcon(android.R.drawable.ic_menu_delete);
+                    isCreatePreparedOptionMenu2 = true;
+                }
+                menu.removeItem(MENU_FORBID_ADD_FIRST);
+                isCreatePreparedOptionMenu3 = false;
+            } else {
+                if (!isCreatePreparedOptionMenu3) {
+                    menu.add(0, MENU_FORBID_ADD_FIRST, 0, "添加").setIcon(android.R.drawable.ic_menu_add);
+                    isCreatePreparedOptionMenu3 = true;
+                }
+                menu.removeItem(MENU_FORBID_REPLY);
+                menu.removeItem(MENU_FORBID_CALL);
+                menu.removeItem(MENU_FORBID_DELETE);
+                menu.removeItem(MENU_FORBID_CLEAR);
+                menu.removeItem(MENU_FORBID_ADD);
+                isCreatePreparedOptionMenu2 = false;
+            }
+        } else {
+            menu.removeItem(MENU_FORBID_REPLY);
+            menu.removeItem(MENU_FORBID_CALL);
+            menu.removeItem(MENU_FORBID_DELETE);
+            menu.removeItem(MENU_FORBID_CLEAR);
+            menu.removeItem(MENU_FORBID_ADD);
+            menu.removeItem(MENU_FORBID_ADD_FIRST);
+            isCreatePreparedOptionMenu2 = false;
+        }
+        return super.onPrepareOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        int positionTab1 = mListViewTab1.getSelectedItemPosition();
+        int positionTab2 = mListViewTab2.getSelectedItemPosition();
+        switch (item.getItemId()) {
+            case MENU_RUBBISH_REPLY:
+                if (positionTab1 != -1) {
+                    actionSMS(positionTab1, mCursorTab1, DbAdapter.CALL_RECORD_PHONE);
+                } else {
+                    callMethod(mListViewTab1, "sms", mCursorTab1, DbAdapter.CALL_RECORD_PHONE, "");
+                }
+                break;
+            case MENU_RUBBISH_CALL:
+                if (positionTab1 != -1) {
+                    actionCALL(positionTab1, mCursorTab1, DbAdapter.CALL_RECORD_PHONE);
+                } else {
+                    callMethod(mListViewTab1, "call", mCursorTab1, DbAdapter.CALL_RECORD_PHONE, "");
+                }
+                break;
+            case MENU_RUBBISH_DELETE:
+                if (positionTab1 != -1) {
+                    mCursorTab1.moveToPosition(positionTab1);
+                    long rowId = mCursorTab1.getLong(mCursorTab1.getColumnIndex(DbAdapter.TABLE_ID));
+                    mDbAdapter.getDel(rowId, DbAdapter.CALL_RECORD_TABLE_NAME);
+                } else {
+                    delMarkItemData(mListViewTab1, mCursorTab1, DbAdapter.CALL_RECORD_TABLE_NAME);
+                }
+                initTab1Data();
+                break;
+            case MENU_RUBBISH_CLEAR:
+                mDbAdapter.deleteTable(DbAdapter.CALL_RECORD_TABLE_NAME);
+                initTab1Data();
+                break;
+            case MENU_RUBBISH_BACK:
+                if (positionTab1 != -1) {
+                    addContact(getPhoneNumber(positionTab1, mCursorTab1));
+                } else {
+                    callMethod(mListViewTab1, "sms", mCursorTab1, DbAdapter.CALL_RECORD_PHONE, "addContact");
+                }
+                break;
+            case MENU_FORBID_ADD:
+            case MENU_FORBID_ADD_FIRST:
+                addForbidPhone();
+                break;
+            case MENU_FORBID_REPLY:
+                if (positionTab2 != -1) {
+                    actionSMS(positionTab2, mCursorTab2, DbAdapter.CALL_FORBID_PHONE);
+                } else {
+                    callMethod(mListViewTab2, "sms", mCursorTab2, DbAdapter.CALL_FORBID_PHONE, "");
+                }
+                break;
+            case MENU_FORBID_CALL:
+                if (positionTab2 != -1) {
+                    actionCALL(positionTab2, mCursorTab2, DbAdapter.CALL_FORBID_PHONE);
+                } else {
+                    callMethod(mListViewTab2, "call", mCursorTab2, DbAdapter.CALL_FORBID_PHONE, "");
+                }
+                break;
+            case MENU_FORBID_DELETE:
+                if (positionTab2 != -1) {
+                    mCursorTab2.moveToPosition(positionTab2);
+                    long rowId = mCursorTab2.getLong(mCursorTab2.getColumnIndex(DbAdapter.TABLE_ID));
+                    mDbAdapter.getDel(rowId, DbAdapter.CALL_FORBID_TABLE_NAME);
+                } else {
+                    delMarkItemData(mListViewTab2, mCursorTab2, DbAdapter.CALL_FORBID_TABLE_NAME);
+                }
+                initTab2Data();
+                break;
+            case MENU_FORBID_CLEAR:
+                mDbAdapter.deleteTable(DbAdapter.CALL_FORBID_TABLE_NAME);
+                initTab2Data();
+                break;
+
+        }
+        return super.onOptionsItemSelected(item);
+    }
+    /*--------------------------------------------------------------------------------------关于动态菜单End----------------------------------------------*/
+
+    /*--------------------------------------------------------------------------------------接收到垃圾短信时的广播接收器Begin------------------*/
+    class MyBroadCastReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equals(BroadCastTool.CALL_RECEIVED_ACTION)) {
+                initTab1Data();
+            }
+        }
+    }
+    /*--------------------------------------------------------------------------------------接收到垃圾短信时的广播接收器End---------------------*/
+
+    /**
+     * ---------------------------------------------------------------------------------------添加黑名单的Dialog-------------------------------------------
+     */
+    EditText mForbidPhone;
+
+    private void addForbidPhone() {
+        LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        RelativeLayout mRL = (RelativeLayout) mLI.inflate(R.layout.message_forbid_add, null);
+        mForbidPhone = (EditText) mRL.findViewById(R.id.new_forbid_phone);
+        Button mButton = (Button) mRL.findViewById(R.id.get_system_contact);
+        mButton.setOnClickListener(new View.OnClickListener() {
+
+            @Override
+            public void onClick(View v) {
+                showMulitAlertDialog();
+            }
+        });
+        new AlertDialog.Builder(CallActivity.this).setTitle("添加黑名单").setView(mRL)
+                .setPositiveButton("确定", new OnClickListener() {
+                    public void onClick(DialogInterface arg0, int arg1) {
+                        String mNewForbidPhone = mForbidPhone.getText().toString();
+                        if (mNewForbidPhone.length() < 3) {
+                            Toast.makeText(CallActivity.this, "输入错误!", Toast.LENGTH_SHORT).show();
+                        } else {
+                            String mStr[] = mNewForbidPhone.split(";");
+                            for (int i = 0; i != mStr.length; i++) {
+                                String phone = mStr[i].split(":").length == 1 ? mStr[i].split(":")[0] : mStr[i].split(":")[1];
+                                if (!(mDbAdapter.getPhone(phone, 4)).moveToFirst()) {
+                                    Call_Forbid_Info mCFI = new Call_Forbid_Info();
+                                    mCFI.setCall_forbid_phone(phone);
+                                    mDbAdapter.getAdd(mCFI);
+                                } else {
+                                    Toast.makeText(CallActivity.this, "号码" + phone + "已存在!", Toast.LENGTH_SHORT).show();
+                                }
+                            }
+                            initTab2Data();
+                            Toast.makeText(CallActivity.this, "添加成功!", Toast.LENGTH_SHORT).show();
+                        }
+                    }
+                }).setNegativeButton("取消", null).show();
+    }
+
+    private ListView mLV;
+
+    @SuppressWarnings("deprecation")
+    private void showMulitAlertDialog() {
+        Cursor mCursor = getContentResolver().query(Phones.CONTENT_URI, new String[]{"_id", "name", "number"}, null, null, "number desc");
+        startManagingCursor(mCursor);
+
+        if (mCursor.moveToFirst()) {
+            int m = 0;
+            String mContant[] = new String[mCursor.getCount()];
+            do {
+                String phoneNumber = mCursor.getString(mCursor.getColumnIndex(Phones.NUMBER));
+                mContant[m] = mCursor.getString(mCursor.getColumnIndex(Phones.NAME)) + ":" + (phoneNumber.length() == 13 ? phoneNumber.substring(2) : phoneNumber);
+                m++;
+            } while (mCursor.moveToNext());
+            initListData(mContant);
+        }
+
+    }
+
+    String checkInfo;
+
+    private void initListData(final String[] contant) {
+        AlertDialog mAlertDialog = new AlertDialog.Builder(this).setMultiChoiceItems(contant,
+                new boolean[contant.length],
+                new DialogInterface.OnMultiChoiceClickListener() {
+
+                    @Override
+                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
+
+                    }
+                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
+
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                checkInfo = "";
+                for (int i = 0; i != contant.length; i++) {
+                    if (mLV.getCheckedItemPositions().get(i)) {
+                        checkInfo += mLV.getAdapter().getItem(i).toString() + ";";
+                    }
+                }
+                mForbidPhone.setText(checkInfo.substring(0, checkInfo.length()));
+            }
+        }).setNegativeButton("取消", null).create();
+        mLV = mAlertDialog.getListView();
+        mAlertDialog.show();
+    }
 
 }

+ 444 - 420
app/src/main/java/me/yoqi/mobile/safe/MainActivity.java

@@ -1,21 +1,5 @@
 package me.yoqi.mobile.safe;
 
-import java.io.IOException;
-import java.io.StringReader;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.util.EntityUtils;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.content.Context;
@@ -42,413 +26,453 @@ import android.widget.SlidingDrawer.OnDrawerCloseListener;
 import android.widget.SlidingDrawer.OnDrawerOpenListener;
 import android.widget.TextView;
 import android.widget.Toast;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
 import me.yoqi.mobile.handler.PhoneNumberXml;
 import me.yoqi.mobile.tool.BroadCastTool;
 
 public class MainActivity extends Activity implements OnClickListener {
-	/** 成员变量 */
-	public static boolean[] isCheckBoxChecked = new boolean[9];
-	public static boolean[] isRadioButtonChecked = new boolean[4];
-	public static String mUndisturbedContent = "关闭";
-	public static String mStartTime = "23:00";
-	public static String mEndTime = "07:00";
-	private ImageButton mMenu_Message, mMenu_Call, mMenu_Phone, mMenu_State,
-			mMenu_Smart, mMenu_Set;
-	private SlidingDrawer mSlidingDrawer;
-	private ImageView mImageView;
-	private Intent mIntent;
-	private Intent mServiceIntent;
-	public static final String MESSAGE_RUBBISH_TABLE_NAME = "message_rubbish_table";
-	EditText mInputPhoneNumber;
-	String result;
-	private SharedPreferences mSharedPreferences;
-	private SharedPreferences.Editor mEditor;
-
-	@Override
-	public void onCreate(Bundle savedInstanceState) {
-		super.onCreate(savedInstanceState);
-		Log.d("MainActivity", "onCreate");
-		mServiceIntent = new Intent(BroadCastTool.AUTO_START_SERVICE);
-		confirmPw();
-	}
-
-	@Override
-	protected void onStart() {
-		super.onStart();
-		Log.d("MainActivity", "onStart");
-	}
-
-	@Override
-	protected void onResume() {
-		Log.d("MainActivity", "onResume");
-		super.onResume();
-	}
-
-	//监视键盘的返回键
-	@Override
-	public boolean onKeyDown(int keyCode, KeyEvent event){
-		if(keyCode == KeyEvent.KEYCODE_BACK){
-			new AlertDialog.Builder(MainActivity.this).setTitle("提示").setMessage(
-			"你确定要退出吗?").setPositiveButton("确定",
-			new DialogInterface.OnClickListener() {
-
-				public void onClick(DialogInterface arg0, int arg1) {
-					Intent mIntent = new Intent(BroadCastTool.AUTO_START_SERVICE);
-					stopService(mIntent);
-					MainActivity.this.finish();
-				}
-
-			}).setNegativeButton("取消", null).show();
-			return false;
-		}else{
-			return super.onKeyDown(keyCode, event);
-		}
-	}
-	
-	@Override
-	protected void onStop() {
-		Log.d("MainActivity", "onStop");
-		super.onStop();
-	}
-
-	@Override
-	protected void onDestroy() {
-		super.onDestroy();
-		Log.d("MainActivity", "onDestroy");
-		startService(mServiceIntent);
-	}
-
-	/**设置了密码保护*/
-	private void confirmPw(){
-		mSharedPreferences = this.getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
-		boolean isPasswordProtected = mSharedPreferences.getBoolean("isPasswordProtected", false);
-		if(isPasswordProtected){
-			LayoutInflater mLI = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-			final RelativeLayout mRL = (RelativeLayout)mLI.inflate(R.layout.protected_password_confirm, null);
-			final EditText mEnterPw = (EditText)mRL.findViewById(R.id.protected_enter_pw);
-			final TextView mForgetPw = (TextView)mRL.findViewById(R.id.protected_forget_pw);
-			new AlertDialog.Builder(MainActivity.this).setTitle("密码保护").setView(mRL)
-			.setPositiveButton("确定", new DialogInterface.OnClickListener(){
-				public void onClick(DialogInterface arg0, int arg1) {
-					mSharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
-					String mPw = mSharedPreferences.getString("mPW", "");
-					if(!mPw.equals(mEnterPw.getText().toString())){
-						Toast.makeText(MainActivity.this, "密码错误!", Toast.LENGTH_LONG).show();
-						confirmPw();
-					}else{
-						initContentView();
-					}
-				}
-			}).setNegativeButton("取消", new DialogInterface.OnClickListener(){
-				public void onClick(DialogInterface arg0, int arg1) {
-					MainActivity.this.finish();
-				}
-			}).setOnCancelListener(new OnCancelListener(){
-
-				public void onCancel(DialogInterface arg0) {
-					MainActivity.this.finish();
-				}
-				
-			}).show();	
-			mForgetPw.setOnClickListener(new OnClickListener(){//对“忘记密码”的监听
-
-				public void onClick(View arg0) {
-					getBackPwByQuestion();
-				}
-				
-			});
-		}else{
-			initContentView();
-		}
-	}
-	
-	/**当密码正确,或者未设置密码保护时的初始化界面*/
-	private void initContentView(){
-		startService(mServiceIntent);
-		setContentView(R.layout.main);
-		initView();
-		initListener();
-		initSlidingListener();
-		stopService(mServiceIntent);
-	}
-	
-	/**用密保问题取回密码*/
-	private void getBackPwByQuestion(){
-		LayoutInflater mLI = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-		LinearLayout mLL = (LinearLayout)mLI.inflate(R.layout.getback_pw_by_question, null);
-		final EditText mQuestion = (EditText)mLL.findViewById(R.id.getback_pw_question);
-		final EditText mAnswer = (EditText)mLL.findViewById(R.id.getback_pw_answer);
-		new AlertDialog.Builder(MainActivity.this).setTitle("取回密码").setView(mLL)
-		.setPositiveButton("确定", new DialogInterface.OnClickListener(){
-			public void onClick(DialogInterface arg0, int arg1) {
-				mSharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
-				String mQuestionStr = mSharedPreferences.getString("mPW_Question", "");
-				String mAnswerStr = mSharedPreferences.getString("mPW_Answer", "");
-				if(mQuestionStr.equals(mQuestion.getText().toString())&&mAnswerStr.equals(mAnswer.getText().toString())){
-					new AlertDialog.Builder(MainActivity.this).setMessage("恭喜你,您的密码是 "+mSharedPreferences.getString("mPW", "")+" 记住哦!").show();
-				}else{
-					new AlertDialog.Builder(MainActivity.this).setMessage("哎,杯具了!").show();
-				}
-			}
-		}).setNegativeButton("取消", new DialogInterface.OnClickListener(){
-			public void onClick(DialogInterface arg0, int arg1) {
-				
-			}
-		}).show();	
-	}
-	
-	/** 初始化基本组件 */
-	private void initView() {
-		mMenu_Message = (ImageButton) findViewById(R.id.ImageView01);
-		mMenu_Call = (ImageButton) findViewById(R.id.ImageView02);
-		mMenu_Phone = (ImageButton) findViewById(R.id.ImageView03);
-		mMenu_State = (ImageButton) findViewById(R.id.ImageView04);
-		mMenu_Smart = (ImageButton) findViewById(R.id.ImageView05);
-		mMenu_Set = (ImageButton) findViewById(R.id.ImageView06);
-		mSlidingDrawer = (SlidingDrawer) findViewById(R.id.menu_sliding);
-		mImageView = (ImageView) findViewById(R.id.sliding_image);
-		// mTextView = (TextView) findViewById(R.id.menu_title);
-	}
-
-	/** 注册监听器 */
-	private void initListener() {
-		mMenu_Message.setOnClickListener(this);
-		mMenu_Call.setOnClickListener(this);
-		mMenu_Phone.setOnClickListener(this);
-		mMenu_State.setOnClickListener(this);
-		mMenu_Smart.setOnClickListener(this);
-		mMenu_Set.setOnClickListener(this);
-	}
-
-	/** SlidingDrawer的开关事件监听 */
-	private void initSlidingListener() {
-		mSlidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
-			public void onDrawerOpened() {
-				mImageView.setImageResource(R.drawable.spliding_close);
-			}
-		});
-		mSlidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
-			public void onDrawerClosed() {
-				mImageView.setImageResource(R.drawable.spliding_open);
-			}
-		});
-	}
-
-	/** 点击事件 */
-	public void onClick(View view) {
-		switch (view.getId()) {
-		case R.id.ImageView01:
-			mIntent = new Intent(MainActivity.this, MessageActivity.class);
-			MainActivity.this.startActivity(mIntent);
-			break;
-		case R.id.ImageView02:
-			mIntent = new Intent(MainActivity.this, CallActivity.class);
-			MainActivity.this.startActivity(mIntent);
-			break;
-		case R.id.ImageView03:
-			phoneAera();
-			break;
-		case R.id.ImageView04:
-			initChangeAudioDialog();
-			break;
-		case R.id.ImageView05:
-			smartSet();
-			break;
-		case R.id.ImageView06:
-			mIntent = new Intent(MainActivity.this, SetActivity.class);
-			MainActivity.this.startActivity(mIntent);
-			break;
-		}
-
-	}
-
-	/**号码归属地查询*/
-	private void phoneAera(){
-		LinearLayout mInputNumber = (LinearLayout) getLayoutInflater().inflate(R.layout.searchphone, null);
-		mInputPhoneNumber = (EditText)mInputNumber.findViewById(R.id.phonenumber);
-		new AlertDialog.Builder(MainActivity.this).setTitle("号码查询")
-		.setIcon(getResources().getDrawable(R.drawable.menu_phone_press)).setView(mInputNumber)
-			.setPositiveButton("确定",new DialogInterface.OnClickListener() {
-					public void onClick(DialogInterface arg0, int arg1) {
-							HttpResponse mHttpResponse = null;
-							try {
-								HttpGet mHttpGet = new HttpGet("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode="+mInputPhoneNumber.getText().toString()+"&userID=");
-								mHttpResponse = new DefaultHttpClient().execute(mHttpGet);
-								new AlertDialog.Builder(MainActivity.this).setMessage("StatusCode is "+mHttpResponse.getStatusLine().getStatusCode()).show();
-								if(mHttpResponse.getStatusLine().getStatusCode()==200){
-									result = EntityUtils.toString(mHttpResponse.getEntity());
-									Log.d("phonenumber","result is "+result);
-									SAXParserFactory mSAXParserFactory = SAXParserFactory.newInstance();
-									SAXParser mSAXParser = mSAXParserFactory.newSAXParser();
-									XMLReader mXMLReader = mSAXParser.getXMLReader();
-									PhoneNumberXml mPhoneNumberXml = new PhoneNumberXml();
-									mXMLReader.setContentHandler(mPhoneNumberXml);
-									StringReader mStringReader = new StringReader(result);
-									InputSource mInputSource = new InputSource(mStringReader);
-									mXMLReader.parse(mInputSource);
-									new AlertDialog.Builder(MainActivity.this).setMessage(PhoneNumberXml.mPhoneNumberStr).create().show();
-								}else{
-									Toast.makeText(MainActivity.this, "网络连接错误!", Toast.LENGTH_LONG).show();
-								}
-								
-							} catch (ClientProtocolException e) {
-								e.printStackTrace();
-							} catch (IOException e) {
-								e.printStackTrace();
-							} catch (ParserConfigurationException e) {
-								e.printStackTrace();
-							} catch (SAXException e) {
-								e.printStackTrace();
-							}
-					}
-
-				}).setNegativeButton("取消",null).show();
-	}
-	
-	/** 智能收发设置 */
-	private void smartSet() {
-		RelativeLayout intellectLayout = (RelativeLayout) getLayoutInflater()
-				.inflate(R.layout.intellect, null);
-		final SharedPreferences settings = getSharedPreferences("DEMO",
-				MODE_PRIVATE);
-		// 获得设置界面的组件
-		mCheckbox01 = (CheckBox) intellectLayout
-				.findViewById(R.id.intellect_checbox_1);
-		mCheckbox02 = (CheckBox) intellectLayout
-				.findViewById(R.id.intellect_checbox_2);
-		mCheckbox03 = (CheckBox) intellectLayout
-				.findViewById(R.id.intellect_checbox_3);
-		mEditText01 = (EditText) intellectLayout
-				.findViewById(R.id.intellect_edittext01);
-		mEditText02 = (EditText) intellectLayout
-				.findViewById(R.id.intellect_edittext02);
-		// 加载界面的原始设置
-		if (settings.getBoolean("bool01", false)) {
-			mCheckbox01.setChecked(true);
-			mEditText01.setVisibility(View.VISIBLE);
-			mEditText01.setText(settings.getString("smartE01", ""));
-		}
-		if (settings.getBoolean("bool02", false)) {
-			mCheckbox02.setChecked(true);
-			mEditText02.setVisibility(View.VISIBLE);
-			mEditText02.setText(settings.getString("smartE02", ""));
-		}
-		if (settings.getBoolean("bool03", false)) {
-			mCheckbox03.setChecked(true);
-		}
-		// 给checkbox加监听
-		mCheckbox01.setOnCheckedChangeListener(new Checklistenner());
-		mCheckbox02.setOnCheckedChangeListener(new Checklistenner());
-		mCheckbox03.setOnCheckedChangeListener(new Checklistenner());
-
-		new AlertDialog.Builder(this)
-				.setTitle("智能收发设置")
-				.setIcon(getResources().getDrawable(R.drawable.menu_smart_press))
-				.setView(intellectLayout)
-				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
-					public void onClick(DialogInterface dialog, int which) {
-						SharedPreferences.Editor sedit = settings.edit();
-						// String use = settings.getString("username", "");
-						// String passw = settings.getString("password", "");
-						if (mCheckbox01.isChecked()) {
-							boolean bool01 = true;
-							sedit.putBoolean("bool01", bool01).commit();
-							sedit.putString("smartE01",
-									mEditText01.getText().toString()).commit();
-						} else {
-							sedit.remove("bool01").commit();
-							sedit.remove("smartE01").commit();
-						}
-						if (mCheckbox02.isChecked()) {
-							boolean bool02 = true;
-							sedit.putBoolean("bool02", bool02).commit();
-							sedit.putString("smartE02",
-									mEditText02.getText().toString()).commit();
-						} else {
-							sedit.remove("bool02").commit();
-							sedit.remove("smartE02").commit();
-						}
-						if (mCheckbox03.isChecked()) {
-							boolean bool03 = true;
-							sedit.putBoolean("bool03", bool03).commit();
-						} else {
-							sedit.remove("bool03").commit();
-						}
-					}
-				}).setNegativeButton("取消", null).show();
-	}
-
-	private CheckBox mCheckbox01;
-	private CheckBox mCheckbox02;
-	private CheckBox mCheckbox03;
-	private EditText mEditText01;
-	private EditText mEditText02;
-
-	/**
-	 * 智能收发checkbox的监听类
-	 * 
-	 * @author yuli
-	 */
-	class Checklistenner implements OnCheckedChangeListener {
-		public void onCheckedChanged(CompoundButton buttonView,
-				boolean isChecked) {
-			if (!mCheckbox01.isChecked()) {
-				mEditText01.setVisibility(View.GONE);
-			} else {
-				mEditText01.setVisibility(View.VISIBLE);
-			}
-			if (!mCheckbox02.isChecked()) {
-				mEditText02.setVisibility(View.GONE);
-			} else {
-				mEditText02.setVisibility(View.VISIBLE);
-			}
-			if (!mCheckbox03.isChecked()) {
-				Toast.makeText(MainActivity.this, "关闭了电话留言", Toast.LENGTH_SHORT).show();
-			} else {
-				Toast.makeText(MainActivity.this, "开启了电话留言", Toast.LENGTH_SHORT).show();
-			}
-		}
-	}
-	
-	/**更改情景模式的弹出框*/
-	private void initChangeAudioDialog(){
-		LinearLayout mLL = (LinearLayout) getLayoutInflater().inflate(R.layout.main_audio_change, null);
-		final EditText mQJ_MS = (EditText)mLL.findViewById(R.id.edit_qingjing_ms);
-		final EditText mQJ_JY = (EditText)mLL.findViewById(R.id.edit_qingjing_jy);
-		final EditText mQJ_ZD = (EditText)mLL.findViewById(R.id.edit_qingjing_zd);
-		final EditText mQJ_XL = (EditText)mLL.findViewById(R.id.edit_qingjing_xl);
-		mSharedPreferences = getSharedPreferences("QJMO",MODE_PRIVATE);
-		mQJ_MS.setText(mSharedPreferences.getString("mQJ_MS", ""));
-		mQJ_JY.setText(mSharedPreferences.getString("mQJ_JY", ""));
-		mQJ_ZD.setText(mSharedPreferences.getString("mQJ_ZD", ""));
-		mQJ_XL.setText(mSharedPreferences.getString("mQJ_XL", ""));
-		new AlertDialog.Builder(this)
-		.setTitle("情景模式设置")
-		.setIcon(getResources().getDrawable(R.drawable.menu_state_press))
-		.setMessage("发送格式:情景指令+相应指令,如情景指令为qjzl,静音指令为jy,则发送格式为qjzl+jy")
-		.setView(mLL)
-		.setPositiveButton("确定", new DialogInterface.OnClickListener(){
-
-			@Override
-			public void onClick(DialogInterface dialog, int which) {
-				String mMS = mQJ_MS.getText().toString();
-				String mJY = mQJ_JY.getText().toString();
-				String mZD = mQJ_ZD.getText().toString();
-				String mXL = mQJ_XL.getText().toString();
-				if(mMS.length() == 0||mJY.length() == 0||mZD.length() == 0||mXL.length() == 0){
-					Toast.makeText(getApplicationContext(), "输入有误,注意任何一项不能为空", Toast.LENGTH_SHORT).show();
-				}else{
-					mSharedPreferences = getSharedPreferences("QJMO",MODE_PRIVATE);
-					mEditor = mSharedPreferences.edit();
-					mEditor.putString("mQJ_MS", mMS);
-					mEditor.putString("mQJ_JY", mJY);
-					mEditor.putString("mQJ_ZD", mZD);
-					mEditor.putString("mQJ_XL", mXL);
-					mEditor.commit();
-				}
-			}
-			
-		}).setNegativeButton("取消", null).show();
-	}
+    /**
+     * 成员变量
+     */
+    public static boolean[] isCheckBoxChecked = new boolean[9];
+    public static boolean[] isRadioButtonChecked = new boolean[4];
+    public static String mUndisturbedContent = "关闭";
+    public static String mStartTime = "23:00";
+    public static String mEndTime = "07:00";
+    private ImageButton mMenu_Message, mMenu_Call, mMenu_Phone, mMenu_State,
+            mMenu_Smart, mMenu_Set;
+    private SlidingDrawer mSlidingDrawer;
+    private ImageView mImageView;
+    private Intent mIntent;
+    private Intent mServiceIntent;
+    public static final String MESSAGE_RUBBISH_TABLE_NAME = "message_rubbish_table";
+    EditText mInputPhoneNumber;
+    String result;
+    private SharedPreferences mSharedPreferences;
+    private SharedPreferences.Editor mEditor;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.d("MainActivity", "onCreate");
+        mServiceIntent = new Intent(BroadCastTool.AUTO_START_SERVICE);
+        confirmPw();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        Log.d("MainActivity", "onStart");
+    }
+
+    @Override
+    protected void onResume() {
+        Log.d("MainActivity", "onResume");
+        super.onResume();
+    }
+
+    //监视键盘的返回键
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            new AlertDialog.Builder(MainActivity.this).setTitle("提示").setMessage(
+                    "你确定要退出吗?").setPositiveButton("确定",
+                    new DialogInterface.OnClickListener() {
+
+                        public void onClick(DialogInterface arg0, int arg1) {
+                            Intent mIntent = new Intent(BroadCastTool.AUTO_START_SERVICE);
+                            stopService(mIntent);
+                            MainActivity.this.finish();
+                        }
+
+                    }).setNegativeButton("取消", null).show();
+            return false;
+        } else {
+            return super.onKeyDown(keyCode, event);
+        }
+    }
+
+    @Override
+    protected void onStop() {
+        Log.d("MainActivity", "onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        Log.d("MainActivity", "onDestroy");
+        startService(mServiceIntent);
+    }
+
+    /**
+     * 设置了密码保护
+     */
+    private void confirmPw() {
+        mSharedPreferences = this.getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
+        boolean isPasswordProtected = mSharedPreferences.getBoolean("isPasswordProtected", false);
+        if (isPasswordProtected) {
+            LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            final RelativeLayout mRL = (RelativeLayout) mLI.inflate(R.layout.protected_password_confirm, null);
+            final EditText mEnterPw = (EditText) mRL.findViewById(R.id.protected_enter_pw);
+            final TextView mForgetPw = (TextView) mRL.findViewById(R.id.protected_forget_pw);
+            new AlertDialog.Builder(MainActivity.this).setTitle("密码保护").setView(mRL)
+                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                        public void onClick(DialogInterface arg0, int arg1) {
+                            mSharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
+                            String mPw = mSharedPreferences.getString("mPW", "");
+                            if (!mPw.equals(mEnterPw.getText().toString())) {
+                                Toast.makeText(MainActivity.this, "密码错误!", Toast.LENGTH_LONG).show();
+                                confirmPw();
+                            } else {
+                                initContentView();
+                            }
+                        }
+                    }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
+                        public void onClick(DialogInterface arg0, int arg1) {
+                            MainActivity.this.finish();
+                        }
+                    }).setOnCancelListener(new OnCancelListener() {
+
+                        public void onCancel(DialogInterface arg0) {
+                            MainActivity.this.finish();
+                        }
+
+                    }).show();
+            mForgetPw.setOnClickListener(new OnClickListener() {//对“忘记密码”的监听
+
+                public void onClick(View arg0) {
+                    getBackPwByQuestion();
+                }
+
+            });
+        } else {
+            initContentView();
+        }
+    }
+
+    /**
+     * 当密码正确,或者未设置密码保护时的初始化界面
+     */
+    private void initContentView() {
+//        服务启动异常
+        startService(mServiceIntent);
+        setContentView(R.layout.main);
+        initView();
+        initListener();
+        initSlidingListener();
+        stopService(mServiceIntent);
+    }
+
+    /**
+     * 用密保问题取回密码
+     */
+    private void getBackPwByQuestion() {
+        LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        LinearLayout mLL = (LinearLayout) mLI.inflate(R.layout.getback_pw_by_question, null);
+        final EditText mQuestion = (EditText) mLL.findViewById(R.id.getback_pw_question);
+        final EditText mAnswer = (EditText) mLL.findViewById(R.id.getback_pw_answer);
+        new AlertDialog.Builder(MainActivity.this).setTitle("取回密码").setView(mLL)
+                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface arg0, int arg1) {
+                        mSharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
+                        String mQuestionStr = mSharedPreferences.getString("mPW_Question", "");
+                        String mAnswerStr = mSharedPreferences.getString("mPW_Answer", "");
+                        if (mQuestionStr.equals(mQuestion.getText().toString()) && mAnswerStr.equals(mAnswer.getText().toString())) {
+                            new AlertDialog.Builder(MainActivity.this).setMessage("恭喜你,您的密码是 " + mSharedPreferences.getString("mPW", "") + " 记住哦!").show();
+                        } else {
+                            new AlertDialog.Builder(MainActivity.this).setMessage("哎,杯具了!").show();
+                        }
+                    }
+                }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface arg0, int arg1) {
+
+                    }
+                }).show();
+    }
+
+    /**
+     * 初始化基本组件
+     */
+    private void initView() {
+        mMenu_Message = (ImageButton) findViewById(R.id.ImageView01);
+        mMenu_Call = (ImageButton) findViewById(R.id.ImageView02);
+        mMenu_Phone = (ImageButton) findViewById(R.id.ImageView03);
+        mMenu_State = (ImageButton) findViewById(R.id.ImageView04);
+        mMenu_Smart = (ImageButton) findViewById(R.id.ImageView05);
+        mMenu_Set = (ImageButton) findViewById(R.id.ImageView06);
+        mSlidingDrawer = (SlidingDrawer) findViewById(R.id.menu_sliding);
+        mImageView = (ImageView) findViewById(R.id.sliding_image);
+        // mTextView = (TextView) findViewById(R.id.menu_title);
+    }
+
+    /**
+     * 注册监听器
+     */
+    private void initListener() {
+        mMenu_Message.setOnClickListener(this);
+        mMenu_Call.setOnClickListener(this);
+        mMenu_Phone.setOnClickListener(this);
+        mMenu_State.setOnClickListener(this);
+        mMenu_Smart.setOnClickListener(this);
+        mMenu_Set.setOnClickListener(this);
+    }
+
+    /**
+     * SlidingDrawer的开关事件监听
+     */
+    private void initSlidingListener() {
+        mSlidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
+            public void onDrawerOpened() {
+                mImageView.setImageResource(R.drawable.spliding_close);
+            }
+        });
+        mSlidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
+            public void onDrawerClosed() {
+                mImageView.setImageResource(R.drawable.spliding_open);
+            }
+        });
+    }
+
+    /**
+     * 点击事件
+     */
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.ImageView01:
+                mIntent = new Intent(MainActivity.this, MessageActivity.class);
+                MainActivity.this.startActivity(mIntent);
+                break;
+            case R.id.ImageView02:
+                mIntent = new Intent(MainActivity.this, CallActivity.class);
+                MainActivity.this.startActivity(mIntent);
+                break;
+            case R.id.ImageView03:
+                phoneAera();
+                break;
+            case R.id.ImageView04:
+                initChangeAudioDialog();
+                break;
+            case R.id.ImageView05:
+                smartSet();
+                break;
+            case R.id.ImageView06:
+                mIntent = new Intent(MainActivity.this, SetActivity.class);
+                MainActivity.this.startActivity(mIntent);
+                break;
+        }
+
+    }
+
+    /**
+     * 号码归属地查询
+     */
+    private void phoneAera() {
+        LinearLayout mInputNumber = (LinearLayout) getLayoutInflater().inflate(R.layout.searchphone, null);
+        mInputPhoneNumber = (EditText) mInputNumber.findViewById(R.id.phonenumber);
+        new AlertDialog.Builder(MainActivity.this).setTitle("号码查询")
+                .setIcon(getResources().getDrawable(R.drawable.menu_phone_press)).setView(mInputNumber)
+                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface arg0, int arg1) {
+                        HttpResponse mHttpResponse = null;
+                        try {
+                            HttpGet mHttpGet = new HttpGet("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=" + mInputPhoneNumber.getText().toString() + "&userID=");
+                            mHttpResponse = new DefaultHttpClient().execute(mHttpGet);
+                            new AlertDialog.Builder(MainActivity.this).setMessage("StatusCode is " + mHttpResponse.getStatusLine().getStatusCode()).show();
+                            if (mHttpResponse.getStatusLine().getStatusCode() == 200) {
+                                result = EntityUtils.toString(mHttpResponse.getEntity());
+                                Log.d("phonenumber", "result is " + result);
+                                SAXParserFactory mSAXParserFactory = SAXParserFactory.newInstance();
+                                SAXParser mSAXParser = mSAXParserFactory.newSAXParser();
+                                XMLReader mXMLReader = mSAXParser.getXMLReader();
+                                PhoneNumberXml mPhoneNumberXml = new PhoneNumberXml();
+                                mXMLReader.setContentHandler(mPhoneNumberXml);
+                                StringReader mStringReader = new StringReader(result);
+                                InputSource mInputSource = new InputSource(mStringReader);
+                                mXMLReader.parse(mInputSource);
+                                new AlertDialog.Builder(MainActivity.this).setMessage(PhoneNumberXml.mPhoneNumberStr).create().show();
+                            } else {
+                                Toast.makeText(MainActivity.this, "网络连接错误!", Toast.LENGTH_LONG).show();
+                            }
+
+                        } catch (ClientProtocolException e) {
+                            e.printStackTrace();
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        } catch (ParserConfigurationException e) {
+                            e.printStackTrace();
+                        } catch (SAXException e) {
+                            e.printStackTrace();
+                        }
+                    }
+
+                }).setNegativeButton("取消", null).show();
+    }
+
+    /**
+     * 智能收发设置
+     */
+    private void smartSet() {
+        RelativeLayout intellectLayout = (RelativeLayout) getLayoutInflater()
+                .inflate(R.layout.intellect, null);
+        final SharedPreferences settings = getSharedPreferences("DEMO",
+                MODE_PRIVATE);
+        // 获得设置界面的组件
+        mCheckbox01 = (CheckBox) intellectLayout
+                .findViewById(R.id.intellect_checbox_1);
+        mCheckbox02 = (CheckBox) intellectLayout
+                .findViewById(R.id.intellect_checbox_2);
+        mCheckbox03 = (CheckBox) intellectLayout
+                .findViewById(R.id.intellect_checbox_3);
+        mEditText01 = (EditText) intellectLayout
+                .findViewById(R.id.intellect_edittext01);
+        mEditText02 = (EditText) intellectLayout
+                .findViewById(R.id.intellect_edittext02);
+        // 加载界面的原始设置
+        if (settings.getBoolean("bool01", false)) {
+            mCheckbox01.setChecked(true);
+            mEditText01.setVisibility(View.VISIBLE);
+            mEditText01.setText(settings.getString("smartE01", ""));
+        }
+        if (settings.getBoolean("bool02", false)) {
+            mCheckbox02.setChecked(true);
+            mEditText02.setVisibility(View.VISIBLE);
+            mEditText02.setText(settings.getString("smartE02", ""));
+        }
+        if (settings.getBoolean("bool03", false)) {
+            mCheckbox03.setChecked(true);
+        }
+        // 给checkbox加监听
+        mCheckbox01.setOnCheckedChangeListener(new Checklistenner());
+        mCheckbox02.setOnCheckedChangeListener(new Checklistenner());
+        mCheckbox03.setOnCheckedChangeListener(new Checklistenner());
+
+        new AlertDialog.Builder(this)
+                .setTitle("智能收发设置")
+                .setIcon(getResources().getDrawable(R.drawable.menu_smart_press))
+                .setView(intellectLayout)
+                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int which) {
+                        SharedPreferences.Editor sedit = settings.edit();
+                        // String use = settings.getString("username", "");
+                        // String passw = settings.getString("password", "");
+                        if (mCheckbox01.isChecked()) {
+                            boolean bool01 = true;
+                            sedit.putBoolean("bool01", bool01).commit();
+                            sedit.putString("smartE01",
+                                    mEditText01.getText().toString()).commit();
+                        } else {
+                            sedit.remove("bool01").commit();
+                            sedit.remove("smartE01").commit();
+                        }
+                        if (mCheckbox02.isChecked()) {
+                            boolean bool02 = true;
+                            sedit.putBoolean("bool02", bool02).commit();
+                            sedit.putString("smartE02",
+                                    mEditText02.getText().toString()).commit();
+                        } else {
+                            sedit.remove("bool02").commit();
+                            sedit.remove("smartE02").commit();
+                        }
+                        if (mCheckbox03.isChecked()) {
+                            boolean bool03 = true;
+                            sedit.putBoolean("bool03", bool03).commit();
+                        } else {
+                            sedit.remove("bool03").commit();
+                        }
+                    }
+                }).setNegativeButton("取消", null).show();
+    }
+
+    private CheckBox mCheckbox01;
+    private CheckBox mCheckbox02;
+    private CheckBox mCheckbox03;
+    private EditText mEditText01;
+    private EditText mEditText02;
+
+    /**
+     * 智能收发checkbox的监听类
+     *
+     * @author yuli
+     */
+    class Checklistenner implements OnCheckedChangeListener {
+        public void onCheckedChanged(CompoundButton buttonView,
+                                     boolean isChecked) {
+            if (!mCheckbox01.isChecked()) {
+                mEditText01.setVisibility(View.GONE);
+            } else {
+                mEditText01.setVisibility(View.VISIBLE);
+            }
+            if (!mCheckbox02.isChecked()) {
+                mEditText02.setVisibility(View.GONE);
+            } else {
+                mEditText02.setVisibility(View.VISIBLE);
+            }
+            if (!mCheckbox03.isChecked()) {
+                Toast.makeText(MainActivity.this, "关闭了电话留言", Toast.LENGTH_SHORT).show();
+            } else {
+                Toast.makeText(MainActivity.this, "开启了电话留言", Toast.LENGTH_SHORT).show();
+            }
+        }
+    }
+
+    /**
+     * 更改情景模式的弹出框
+     */
+    private void initChangeAudioDialog() {
+        LinearLayout mLL = (LinearLayout) getLayoutInflater().inflate(R.layout.main_audio_change, null);
+        final EditText mQJ_MS = (EditText) mLL.findViewById(R.id.edit_qingjing_ms);
+        final EditText mQJ_JY = (EditText) mLL.findViewById(R.id.edit_qingjing_jy);
+        final EditText mQJ_ZD = (EditText) mLL.findViewById(R.id.edit_qingjing_zd);
+        final EditText mQJ_XL = (EditText) mLL.findViewById(R.id.edit_qingjing_xl);
+        mSharedPreferences = getSharedPreferences("QJMO", MODE_PRIVATE);
+        mQJ_MS.setText(mSharedPreferences.getString("mQJ_MS", ""));
+        mQJ_JY.setText(mSharedPreferences.getString("mQJ_JY", ""));
+        mQJ_ZD.setText(mSharedPreferences.getString("mQJ_ZD", ""));
+        mQJ_XL.setText(mSharedPreferences.getString("mQJ_XL", ""));
+        new AlertDialog.Builder(this)
+                .setTitle("情景模式设置")
+                .setIcon(getResources().getDrawable(R.drawable.menu_state_press))
+                .setMessage("发送格式:情景指令+相应指令,如情景指令为qjzl,静音指令为jy,则发送格式为qjzl+jy")
+                .setView(mLL)
+                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
+
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        String mMS = mQJ_MS.getText().toString();
+                        String mJY = mQJ_JY.getText().toString();
+                        String mZD = mQJ_ZD.getText().toString();
+                        String mXL = mQJ_XL.getText().toString();
+                        if (mMS.length() == 0 || mJY.length() == 0 || mZD.length() == 0 || mXL.length() == 0) {
+                            Toast.makeText(getApplicationContext(), "输入有误,注意任何一项不能为空", Toast.LENGTH_SHORT).show();
+                        } else {
+                            mSharedPreferences = getSharedPreferences("QJMO", MODE_PRIVATE);
+                            mEditor = mSharedPreferences.edit();
+                            mEditor.putString("mQJ_MS", mMS);
+                            mEditor.putString("mQJ_JY", mJY);
+                            mEditor.putString("mQJ_ZD", mZD);
+                            mEditor.putString("mQJ_XL", mXL);
+                            mEditor.commit();
+                        }
+                    }
+
+                }).setNegativeButton("取消", null).show();
+    }
 
 }

+ 47 - 39
app/src/main/java/me/yoqi/mobile/tool/ServiceTool.java

@@ -1,33 +1,36 @@
 package me.yoqi.mobile.tool;
 
+import android.annotation.TargetApi;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Service;
 import android.content.Intent;
+import android.os.Build;
 import android.os.IBinder;
+
 import me.yoqi.mobile.safe.MainActivity;
 import me.yoqi.mobile.safe.R;
 
 public class ServiceTool extends Service {
-	
-	private NotificationManager mNF;
-	public static String AUTO_START = "com.ldci.android.t56.mobile.safe.AUTO_START";
-	
-	@Override
-	public IBinder onBind(Intent arg0) {
-		return null;
-	}
 
-	@Override
-	public void onCreate() {
-		super.onCreate();
-	}
-	
-//	public static int serviceInt = 0;
-	@Override
-	public void onStart(Intent intent, int startId) {
-		super.onStart(intent, startId);
+    private NotificationManager mNF;
+    public static String AUTO_START = "com.ldci.android.t56.mobile.safe.AUTO_START";
+
+    @Override
+    public IBinder onBind(Intent arg0) {
+        return null;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+    }
+
+    //	public static int serviceInt = 0;
+    @Override
+    public void onStart(Intent intent, int startId) {
+        super.onStart(intent, startId);
 //		Toast.makeText(this, "开启服务,发出通知", Toast.LENGTH_LONG).show();
 //		new Thread(new Runnable(){
 //			public void run(){
@@ -41,27 +44,32 @@ public class ServiceTool extends Service {
 //				}
 //			}
 //		}).start();
-		autoStartNotification();
-	}
-	
-	@Override
-	public void onDestroy() {
-		super.onDestroy();
+        autoStartNotification();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
 //		Toast.makeText(this, "停止服务,取消通知", Toast.LENGTH_LONG).show();
-		mNF.cancel(R.string.app_name);
-	}
-	
-	private void autoStartNotification(){
-		Notification mNotification = new Notification(R.drawable.app_logo,"365手机秘书",System.currentTimeMillis());
-		Intent intent = new Intent(this,MainActivity.class);
-		intent.setAction(AUTO_START);
-		intent.putExtra("auto_start", "boot_completed");
-		PendingIntent mPI = PendingIntent.getActivity(this, 0, intent, 0);
-		mNotification.setLatestEventInfo(this, "365手机秘书", "成功开机启动", mPI);
-		if(null == mNF){
-			mNF = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
-		}
-		mNF.notify(R.string.app_name, mNotification);
-	}
-	
+        mNF.cancel(R.string.app_name);
+    }
+
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    private void autoStartNotification() {
+        Notification mNotification = new Notification(R.drawable.app_logo, "365手机秘书", System.currentTimeMillis());
+        Intent intent = new Intent(this, MainActivity.class);
+        intent.setAction(AUTO_START);
+        intent.putExtra("auto_start", "boot_completed");
+        PendingIntent mPI = PendingIntent.getActivity(this, 0, intent, 0);
+
+//		mNotification.setLatestEventInfo(this, "365手机秘书", "成功开机启动", mPI);
+//        Notification.Builder builder = new Notification.Builder(MainActivity.this);
+//        builder.setAutoCancel(true);
+
+        if (null == mNF) {
+            mNF = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        }
+        mNF.notify(R.string.app_name, mNotification);
+    }
+
 }