CallActivity.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. package me.yoqi.mobile.safe;
  2. import android.app.AlertDialog;
  3. import android.app.TabActivity;
  4. import android.content.BroadcastReceiver;
  5. import android.content.ContentProviderOperation;
  6. import android.content.ContentValues;
  7. import android.content.Context;
  8. import android.content.DialogInterface;
  9. import android.content.DialogInterface.OnClickListener;
  10. import android.content.Intent;
  11. import android.content.IntentFilter;
  12. import android.content.OperationApplicationException;
  13. import android.database.Cursor;
  14. import android.net.Uri;
  15. import android.os.Bundle;
  16. import android.os.RemoteException;
  17. import android.provider.Contacts.Phones;
  18. import android.provider.ContactsContract;
  19. import android.provider.ContactsContract.CommonDataKinds.Phone;
  20. import android.provider.ContactsContract.CommonDataKinds.StructuredName;
  21. import android.provider.ContactsContract.Data;
  22. import android.provider.ContactsContract.RawContacts;
  23. import android.view.LayoutInflater;
  24. import android.view.Menu;
  25. import android.view.MenuItem;
  26. import android.view.View;
  27. import android.widget.ArrayAdapter;
  28. import android.widget.Button;
  29. import android.widget.EditText;
  30. import android.widget.LinearLayout;
  31. import android.widget.ListView;
  32. import android.widget.RelativeLayout;
  33. import android.widget.TabHost;
  34. import android.widget.TabHost.OnTabChangeListener;
  35. import android.widget.Toast;
  36. import java.util.ArrayList;
  37. import me.yoqi.mobile.db.DbAdapter;
  38. import me.yoqi.mobile.info.Call_Forbid_Info;
  39. import me.yoqi.mobile.tool.BroadCastTool;
  40. public class CallActivity extends TabActivity implements OnTabChangeListener {
  41. private me.yoqi.mobile.db.DbAdapter mDbAdapter;
  42. private Cursor mCursorTab1;
  43. private Cursor mCursorTab2;
  44. private ListView mListViewTab1;
  45. private ListView mListViewTab2;
  46. private static final int MENU_RUBBISH_BACK = Menu.FIRST;
  47. private static final int MENU_RUBBISH_REPLY = Menu.FIRST + 1;
  48. private static final int MENU_RUBBISH_CALL = Menu.FIRST + 2;
  49. private static final int MENU_RUBBISH_DELETE = Menu.FIRST + 3;
  50. private static final int MENU_RUBBISH_CLEAR = Menu.FIRST + 4;
  51. private static final int MENU_FORBID_REPLY = Menu.FIRST + 5;
  52. private static final int MENU_FORBID_CALL = Menu.FIRST + 6;
  53. private static final int MENU_FORBID_DELETE = Menu.FIRST + 7;
  54. private static final int MENU_FORBID_CLEAR = Menu.FIRST + 8;
  55. private static final int MENU_FORBID_ADD = Menu.FIRST + 9;
  56. private static final int MENU_FORBID_ADD_FIRST = Menu.FIRST + 10;
  57. @Override
  58. protected void onCreate(Bundle savedInstanceState) {
  59. super.onCreate(savedInstanceState);
  60. setContentView(R.layout.tabhost_public);
  61. initFindViewById();
  62. TabHost mTabHost = getTabHost();
  63. mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("拦截记录", getResources().getDrawable(R.drawable.tab_icon_1)).setContent(R.id.tabhost_public_listview));
  64. mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("黑名单", getResources().getDrawable(R.drawable.tab_icon_2)).setContent(R.id.tabhost_public_listview_tab2));
  65. mTabHost.setOnTabChangedListener(this);
  66. mTabHost.setCurrentTab(0);
  67. mDbAdapter = new DbAdapter(CallActivity.this);
  68. mDbAdapter.open();
  69. initTab1Data();
  70. }
  71. private MyBroadCastReceiver mMBCR;
  72. private IntentFilter mIF;
  73. @Override
  74. protected void onResume() {
  75. super.onResume();
  76. mIF = new IntentFilter();
  77. mIF.addAction(BroadCastTool.CALL_RECEIVED_ACTION);
  78. mMBCR = new MyBroadCastReceiver();
  79. this.registerReceiver(mMBCR, mIF);
  80. }
  81. @Override
  82. protected void onDestroy() {
  83. super.onDestroy();
  84. this.unregisterReceiver(mMBCR);
  85. mDbAdapter.close();
  86. }
  87. /**
  88. * 打電話
  89. */
  90. Intent mIntent;
  91. private void actionCALL(int position, Cursor c, String column) {
  92. c.moveToPosition(position);
  93. Uri uri = Uri.parse("tel:" + c.getString(c.getColumnIndex(column)));
  94. mIntent = new Intent(Intent.ACTION_CALL, uri);
  95. startActivity(mIntent);
  96. }
  97. /**
  98. * 發短信
  99. */
  100. private void actionSMS(int position, Cursor c, String column) {
  101. c.moveToPosition(position);
  102. mIntent = new Intent(Intent.ACTION_VIEW);
  103. mIntent.putExtra("address", c.getString(c.getColumnIndex(column)));
  104. mIntent.setType("vnd.android-dir/mms-sms");
  105. startActivity(mIntent);
  106. }
  107. /**
  108. * 刪除標記
  109. */
  110. private void delMarkItemData(ListView lv, Cursor c, String table) {
  111. int mContant = lv.getCount();
  112. for (int i = 0; i != mContant; i++) {
  113. if (lv.getCheckedItemPositions().get(i)) {
  114. c.moveToPosition(i);
  115. long rowId = c.getLong(c.getColumnIndex(DbAdapter.TABLE_ID));
  116. mDbAdapter.getDel(rowId, table);
  117. }
  118. }
  119. }
  120. private String getPhoneNumber(int position, Cursor c) {
  121. c.moveToPosition(position);
  122. return c.getString(c.getColumnIndex(DbAdapter.CALL_RECORD_PHONE));
  123. }
  124. EditText mCallName;
  125. EditText mCallNumber;
  126. private void addContact(String phone) {
  127. LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  128. LinearLayout mLL = (LinearLayout) mLI.inflate(R.layout.set_call_record_name, null);
  129. mCallName = (EditText) mLL.findViewById(R.id.EditText01);
  130. mCallNumber = (EditText) mLL.findViewById(R.id.EditText02);
  131. mCallNumber.setText(phone);
  132. new AlertDialog.Builder(this).setTitle("加入联系人").
  133. setView(mLL).
  134. setPositiveButton("确定", new OnClickListener() {
  135. @Override
  136. public void onClick(DialogInterface dialog, int which) {
  137. if (mCallName.getText().toString().length() != 0 && mCallNumber.getText().toString().length() != 0) {
  138. ContentValues cv = new ContentValues();
  139. ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
  140. ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
  141. builder.withValues(cv);
  142. operationList.add(builder.build());
  143. builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
  144. builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
  145. builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
  146. builder.withValue(StructuredName.DISPLAY_NAME, mCallName.getText().toString());
  147. operationList.add(builder.build());
  148. builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
  149. builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
  150. builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
  151. builder.withValue(Phone.NUMBER, mCallNumber.getText().toString());
  152. builder.withValue(Data.IS_PRIMARY, 1);
  153. operationList.add(builder.build());
  154. try {
  155. getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
  156. } catch (RemoteException e) {
  157. e.printStackTrace();
  158. } catch (OperationApplicationException e) {
  159. e.printStackTrace();
  160. }
  161. Toast.makeText(getApplicationContext(), "成功添加!", Toast.LENGTH_SHORT).show();
  162. } else {
  163. Toast.makeText(getApplicationContext(), "姓名或号码不能为空!", Toast.LENGTH_SHORT).show();
  164. addContact(mCallNumber.getText().toString());
  165. }
  166. }
  167. }).setNegativeButton("取消", null).create().show();
  168. }
  169. /**
  170. * 多选时打电话只拨打第一个被选中的号码,发短信给第一个被选中的号码发送
  171. */
  172. private void callMethod(ListView lv, String sms_call, Cursor c, String column, String addContact) {
  173. if (lv.getCheckedItemPositions().size() >= 1) {
  174. for (int i = 0; i != lv.getCount(); i++) {
  175. if (lv.getCheckedItemPositions().get(i)) {
  176. c.moveToPosition(i);
  177. String phone = c.getString(c.getColumnIndex(column));
  178. if (sms_call.equals("sms")) {
  179. if ("addContact".equals(addContact)) {
  180. addContact(phone);
  181. } else {
  182. mIntent = new Intent(Intent.ACTION_VIEW);
  183. mIntent.putExtra("address", phone);
  184. mIntent.setType("vnd.android-dir/mms-sms");
  185. startActivity(mIntent);
  186. }
  187. } else if (sms_call.equals("call")) {
  188. if ("addContact".equals(addContact)) {
  189. addContact(phone);
  190. } else {
  191. Uri uri = Uri.parse("tel:" + phone);
  192. mIntent = new Intent(Intent.ACTION_DIAL, uri);
  193. startActivity(mIntent);
  194. }
  195. }
  196. break;
  197. }
  198. }
  199. }
  200. }
  201. /**
  202. * -------------------------------初始化基本组件--------------------------------------------------------------------------------------------------
  203. */
  204. private void initFindViewById() {
  205. mListViewTab1 = (ListView) findViewById(R.id.tabhost_public_listview);
  206. mListViewTab2 = (ListView) findViewById(R.id.tabhost_public_listview_tab2);
  207. }
  208. /**
  209. * -------------------------------点击不同标签时的事件监听 ----------------------------------------------------------------------------------
  210. */
  211. private boolean isCheckedTab1OrTab2 = false;
  212. public void onTabChanged(String tabId) {
  213. if ("tab1".equals(tabId)) {
  214. isCheckedTab1OrTab2 = false;
  215. initTab1Data();
  216. } else if ("tab2".equals(tabId)) {
  217. isCheckedTab1OrTab2 = true;
  218. initTab2Data();
  219. }
  220. }
  221. private int i = 0;
  222. /**
  223. * ---------------------------------------------从数据库中获得并加载垃圾短信数据Start-------------------------------------------------
  224. */
  225. private void initTab1Data() {
  226. mCursorTab1 = mDbAdapter.getAll(DbAdapter.CALL_RECORD_TABLE_NAME);
  227. this.stopManagingCursor(mCursorTab1);
  228. i = 0;
  229. int mCount = mCursorTab1.getCount();
  230. if (mCount >= 0) {
  231. mArray = new String[mCount];
  232. if (mCursorTab1.moveToFirst()) {
  233. do {
  234. mArray[i] = "垃圾号码:" + mCursorTab1.getString(mCursorTab1.getColumnIndex(DbAdapter.CALL_RECORD_PHONE)) + "\n" +
  235. "来电时间:" + mCursorTab1.getString(mCursorTab1.getColumnIndex(DbAdapter.CALL_RECORD_TIME));
  236. i++;
  237. } while (mCursorTab1.moveToNext());
  238. }
  239. ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(CallActivity.this, android.R.layout.simple_list_item_checked, mArray);
  240. mListViewTab1.setAdapter(mAdapter);
  241. mListViewTab1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  242. }
  243. }
  244. String[] mArray;
  245. private void initTab2Data() {
  246. mCursorTab2 = mDbAdapter.getAll(DbAdapter.CALL_FORBID_TABLE_NAME);
  247. this.startManagingCursor(mCursorTab2);
  248. i = 0;
  249. int mCount = mCursorTab2.getCount();
  250. if (mCount >= 0) {
  251. mArray = new String[mCount];
  252. if (mCursorTab2.moveToFirst()) {
  253. do {
  254. mArray[i] = mCursorTab2.getString(mCursorTab2.getColumnIndex(DbAdapter.CALL_FORBID_PHONE));
  255. i++;
  256. } while (mCursorTab2.moveToNext());
  257. }
  258. ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(CallActivity.this, android.R.layout.simple_list_item_checked, mArray);
  259. mListViewTab2.setAdapter(mAdapter);
  260. mListViewTab2.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  261. }
  262. }
  263. /*---------------------------------------------从数据库中获得并加载垃圾短信数据End----------------------------------------------------*/
  264. /*--------------------------------------------------------------------------------------关于动态菜单Begin---------------------------------------*/
  265. boolean isCreatePreparedOptionMenu1 = true;
  266. boolean isCreatePreparedOptionMenu2 = false;
  267. boolean isCreatePreparedOptionMenu3 = false;
  268. @Override
  269. public boolean onPrepareOptionsMenu(Menu menu) {
  270. if (isCheckedTab1OrTab2 == false) {
  271. isCreatePreparedOptionMenu3 = false;
  272. if (mListViewTab1.getCount() > 0) {
  273. if (isCreatePreparedOptionMenu1) {
  274. menu.add(0, MENU_RUBBISH_REPLY, 0, "回复").setIcon(android.R.drawable.ic_menu_send);
  275. menu.add(0, MENU_RUBBISH_CALL, 0, "拨打").setIcon(android.R.drawable.ic_menu_call);
  276. menu.add(0, MENU_RUBBISH_DELETE, 0, "删除").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
  277. menu.add(0, MENU_RUBBISH_CLEAR, 0, "清空").setIcon(android.R.drawable.ic_menu_delete);
  278. menu.add(0, MENU_RUBBISH_BACK, 0, "加入联系人").setIcon(android.R.drawable.ic_menu_add);
  279. isCreatePreparedOptionMenu1 = false;
  280. }
  281. } else {
  282. menu.removeItem(MENU_RUBBISH_BACK);
  283. menu.removeItem(MENU_RUBBISH_REPLY);
  284. menu.removeItem(MENU_RUBBISH_CALL);
  285. menu.removeItem(MENU_RUBBISH_DELETE);
  286. menu.removeItem(MENU_RUBBISH_CLEAR);
  287. isCreatePreparedOptionMenu1 = true;
  288. }
  289. } else {
  290. menu.removeItem(MENU_RUBBISH_BACK);
  291. menu.removeItem(MENU_RUBBISH_REPLY);
  292. menu.removeItem(MENU_RUBBISH_CALL);
  293. menu.removeItem(MENU_RUBBISH_DELETE);
  294. menu.removeItem(MENU_RUBBISH_CLEAR);
  295. isCreatePreparedOptionMenu1 = true;
  296. }
  297. if (isCheckedTab1OrTab2 == true) {
  298. if (mListViewTab2.getCount() > 0) {
  299. if (!isCreatePreparedOptionMenu2) {
  300. menu.add(0, MENU_FORBID_ADD, 0, "添加").setIcon(android.R.drawable.ic_menu_add);
  301. menu.add(0, MENU_FORBID_REPLY, 0, "回复").setIcon(android.R.drawable.ic_menu_send);
  302. menu.add(0, MENU_FORBID_CALL, 0, "拨打").setIcon(android.R.drawable.ic_menu_call);
  303. menu.add(0, MENU_FORBID_DELETE, 0, "删除").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
  304. menu.add(0, MENU_FORBID_CLEAR, 0, "清空").setIcon(android.R.drawable.ic_menu_delete);
  305. isCreatePreparedOptionMenu2 = true;
  306. }
  307. menu.removeItem(MENU_FORBID_ADD_FIRST);
  308. isCreatePreparedOptionMenu3 = false;
  309. } else {
  310. if (!isCreatePreparedOptionMenu3) {
  311. menu.add(0, MENU_FORBID_ADD_FIRST, 0, "添加").setIcon(android.R.drawable.ic_menu_add);
  312. isCreatePreparedOptionMenu3 = true;
  313. }
  314. menu.removeItem(MENU_FORBID_REPLY);
  315. menu.removeItem(MENU_FORBID_CALL);
  316. menu.removeItem(MENU_FORBID_DELETE);
  317. menu.removeItem(MENU_FORBID_CLEAR);
  318. menu.removeItem(MENU_FORBID_ADD);
  319. isCreatePreparedOptionMenu2 = false;
  320. }
  321. } else {
  322. menu.removeItem(MENU_FORBID_REPLY);
  323. menu.removeItem(MENU_FORBID_CALL);
  324. menu.removeItem(MENU_FORBID_DELETE);
  325. menu.removeItem(MENU_FORBID_CLEAR);
  326. menu.removeItem(MENU_FORBID_ADD);
  327. menu.removeItem(MENU_FORBID_ADD_FIRST);
  328. isCreatePreparedOptionMenu2 = false;
  329. }
  330. return super.onPrepareOptionsMenu(menu);
  331. }
  332. @Override
  333. public boolean onOptionsItemSelected(MenuItem item) {
  334. int positionTab1 = mListViewTab1.getSelectedItemPosition();
  335. int positionTab2 = mListViewTab2.getSelectedItemPosition();
  336. switch (item.getItemId()) {
  337. case MENU_RUBBISH_REPLY:
  338. if (positionTab1 != -1) {
  339. actionSMS(positionTab1, mCursorTab1, DbAdapter.CALL_RECORD_PHONE);
  340. } else {
  341. callMethod(mListViewTab1, "sms", mCursorTab1, DbAdapter.CALL_RECORD_PHONE, "");
  342. }
  343. break;
  344. case MENU_RUBBISH_CALL:
  345. if (positionTab1 != -1) {
  346. actionCALL(positionTab1, mCursorTab1, DbAdapter.CALL_RECORD_PHONE);
  347. } else {
  348. callMethod(mListViewTab1, "call", mCursorTab1, DbAdapter.CALL_RECORD_PHONE, "");
  349. }
  350. break;
  351. case MENU_RUBBISH_DELETE:
  352. if (positionTab1 != -1) {
  353. mCursorTab1.moveToPosition(positionTab1);
  354. long rowId = mCursorTab1.getLong(mCursorTab1.getColumnIndex(DbAdapter.TABLE_ID));
  355. mDbAdapter.getDel(rowId, DbAdapter.CALL_RECORD_TABLE_NAME);
  356. } else {
  357. delMarkItemData(mListViewTab1, mCursorTab1, DbAdapter.CALL_RECORD_TABLE_NAME);
  358. }
  359. initTab1Data();
  360. break;
  361. case MENU_RUBBISH_CLEAR:
  362. mDbAdapter.deleteTable(DbAdapter.CALL_RECORD_TABLE_NAME);
  363. initTab1Data();
  364. break;
  365. case MENU_RUBBISH_BACK:
  366. if (positionTab1 != -1) {
  367. addContact(getPhoneNumber(positionTab1, mCursorTab1));
  368. } else {
  369. callMethod(mListViewTab1, "sms", mCursorTab1, DbAdapter.CALL_RECORD_PHONE, "addContact");
  370. }
  371. break;
  372. case MENU_FORBID_ADD:
  373. case MENU_FORBID_ADD_FIRST:
  374. addForbidPhone();
  375. break;
  376. case MENU_FORBID_REPLY:
  377. if (positionTab2 != -1) {
  378. actionSMS(positionTab2, mCursorTab2, DbAdapter.CALL_FORBID_PHONE);
  379. } else {
  380. callMethod(mListViewTab2, "sms", mCursorTab2, DbAdapter.CALL_FORBID_PHONE, "");
  381. }
  382. break;
  383. case MENU_FORBID_CALL:
  384. if (positionTab2 != -1) {
  385. actionCALL(positionTab2, mCursorTab2, DbAdapter.CALL_FORBID_PHONE);
  386. } else {
  387. callMethod(mListViewTab2, "call", mCursorTab2, DbAdapter.CALL_FORBID_PHONE, "");
  388. }
  389. break;
  390. case MENU_FORBID_DELETE:
  391. if (positionTab2 != -1) {
  392. mCursorTab2.moveToPosition(positionTab2);
  393. long rowId = mCursorTab2.getLong(mCursorTab2.getColumnIndex(DbAdapter.TABLE_ID));
  394. mDbAdapter.getDel(rowId, DbAdapter.CALL_FORBID_TABLE_NAME);
  395. } else {
  396. delMarkItemData(mListViewTab2, mCursorTab2, DbAdapter.CALL_FORBID_TABLE_NAME);
  397. }
  398. initTab2Data();
  399. break;
  400. case MENU_FORBID_CLEAR:
  401. mDbAdapter.deleteTable(DbAdapter.CALL_FORBID_TABLE_NAME);
  402. initTab2Data();
  403. break;
  404. }
  405. return super.onOptionsItemSelected(item);
  406. }
  407. /*--------------------------------------------------------------------------------------关于动态菜单End----------------------------------------------*/
  408. /*--------------------------------------------------------------------------------------接收到垃圾短信时的广播接收器Begin------------------*/
  409. class MyBroadCastReceiver extends BroadcastReceiver {
  410. @Override
  411. public void onReceive(Context context, Intent intent) {
  412. if (intent.getAction().equals(BroadCastTool.CALL_RECEIVED_ACTION)) {
  413. initTab1Data();
  414. }
  415. }
  416. }
  417. /*--------------------------------------------------------------------------------------接收到垃圾短信时的广播接收器End---------------------*/
  418. /**
  419. * ---------------------------------------------------------------------------------------添加黑名单的Dialog-------------------------------------------
  420. */
  421. EditText mForbidPhone;
  422. private void addForbidPhone() {
  423. LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  424. RelativeLayout mRL = (RelativeLayout) mLI.inflate(R.layout.message_forbid_add, null);
  425. mForbidPhone = (EditText) mRL.findViewById(R.id.new_forbid_phone);
  426. Button mButton = (Button) mRL.findViewById(R.id.get_system_contact);
  427. mButton.setOnClickListener(new View.OnClickListener() {
  428. @Override
  429. public void onClick(View v) {
  430. showMulitAlertDialog();
  431. }
  432. });
  433. new AlertDialog.Builder(CallActivity.this).setTitle("添加黑名单").setView(mRL)
  434. .setPositiveButton("确定", new OnClickListener() {
  435. public void onClick(DialogInterface arg0, int arg1) {
  436. String mNewForbidPhone = mForbidPhone.getText().toString();
  437. if (mNewForbidPhone.length() < 3) {
  438. Toast.makeText(CallActivity.this, "输入错误!", Toast.LENGTH_SHORT).show();
  439. } else {
  440. String mStr[] = mNewForbidPhone.split(";");
  441. for (int i = 0; i != mStr.length; i++) {
  442. String phone = mStr[i].split(":").length == 1 ? mStr[i].split(":")[0] : mStr[i].split(":")[1];
  443. if (!(mDbAdapter.getPhone(phone, 4)).moveToFirst()) {
  444. Call_Forbid_Info mCFI = new Call_Forbid_Info();
  445. mCFI.setCall_forbid_phone(phone);
  446. mDbAdapter.getAdd(mCFI);
  447. } else {
  448. Toast.makeText(CallActivity.this, "号码" + phone + "已存在!", Toast.LENGTH_SHORT).show();
  449. }
  450. }
  451. initTab2Data();
  452. Toast.makeText(CallActivity.this, "添加成功!", Toast.LENGTH_SHORT).show();
  453. }
  454. }
  455. }).setNegativeButton("取消", null).show();
  456. }
  457. private ListView mLV;
  458. @SuppressWarnings("deprecation")
  459. private void showMulitAlertDialog() {
  460. Cursor mCursor = getContentResolver().query(Phones.CONTENT_URI, new String[]{"_id", "name", "number"}, null, null, "number desc");
  461. startManagingCursor(mCursor);
  462. if (mCursor.moveToFirst()) {
  463. int m = 0;
  464. String mContant[] = new String[mCursor.getCount()];
  465. do {
  466. String phoneNumber = mCursor.getString(mCursor.getColumnIndex(Phones.NUMBER));
  467. mContant[m] = mCursor.getString(mCursor.getColumnIndex(Phones.NAME)) + ":" + (phoneNumber.length() == 13 ? phoneNumber.substring(2) : phoneNumber);
  468. m++;
  469. } while (mCursor.moveToNext());
  470. initListData(mContant);
  471. }
  472. }
  473. String checkInfo;
  474. private void initListData(final String[] contant) {
  475. AlertDialog mAlertDialog = new AlertDialog.Builder(this).setMultiChoiceItems(contant,
  476. new boolean[contant.length],
  477. new DialogInterface.OnMultiChoiceClickListener() {
  478. @Override
  479. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  480. }
  481. }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
  482. @Override
  483. public void onClick(DialogInterface dialog, int which) {
  484. checkInfo = "";
  485. for (int i = 0; i != contant.length; i++) {
  486. if (mLV.getCheckedItemPositions().get(i)) {
  487. checkInfo += mLV.getAdapter().getItem(i).toString() + ";";
  488. }
  489. }
  490. mForbidPhone.setText(checkInfo.substring(0, checkInfo.length()));
  491. }
  492. }).setNegativeButton("取消", null).create();
  493. mLV = mAlertDialog.getListView();
  494. mAlertDialog.show();
  495. }
  496. }