package com.android.mms.ui; import java.io.FileOutputStream; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.TelephonyManager; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.util.Log; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.TelephonyIntents; import com.android.mms.MmsApp; import com.android.mms.R; import com.android.mms.data.Conversation; import com.android.mms.transaction.PushReceiver; public class MessageFolderActivity extends Activity { public static final int MENU_MSG_LIST = 0; public static final int MENU_COMPOSE_NEW = 1; public static final int MENU_PREFERENCES = 2; public static final int MENU_SEARCH = 3; public static final int MENU_CBSMS = 4; private static final Uri uri_inbox_mms = Uri.parse("content://mms/inbox"); private static final Uri uri_inbox_sms = Uri.parse("content://sms/inbox"); private static final Uri uri_mms = Uri.parse("content://mms"); private static final Uri uri_drafts_mms = Uri.parse("content://mms/drafts"); private static final Uri uri_drafts_sms = Uri.parse("content://sms/draft"); private static final Uri uri_icc = Uri.parse("content://sms/icc"); private TextView inbox_num; private TextView outbox_num; private TextView sent_num; private TextView drafts_num; private TextView simcard_num; int count_inbox = 0; int count_outbox = 0; int count_sent = 0; int count_drafts = 0; String count_simcard = ""; int count_unread = 0; private static final String MMS_LAUNCH_MODE_PATH = "/data/data/com.android.mms/launchmode"; private boolean[] mSmsReady = {false, false}; public static final String mSmsReceiveAction = "android.provider.Telephony.SMS_RECEIVED"; public static final String mMmsReceiveAction = "android.provider.Telephony.MMS_RECEIVED"; public static final String mSmsSendAction = "android.provider.Telephony.SEND_SMS"; private static final String mSmsInsertAction = "android.provide.NEW_MESSAGE_INSERT"; private static final String mSimStoreAction = "android.provide.STORE_SIMCARD_SUCESS"; //Add for Dualsim private static final Uri uri_icc1 = Uri.parse("content://sms/icc1"); private TextView simcard_num1; private TextView simcard_num2; String count_simcard1 = ""; String count_simcard2 = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.msg_folder_screen); initResource(); // process of clicked inbox final RelativeLayout rl_inbox = (RelativeLayout) findViewById(R.id.rl_inbox); rl_inbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent it = new Intent(MessageFolderActivity.this, MessageBoxActivity.class); Bundle bundle = new Bundle(); bundle.putString("boxType", "inbox"); bundle.putString("msgCount", Integer.toString(count_inbox)); it.putExtras(bundle); startActivity(it); } }); // process of clicked outbox final RelativeLayout rl_outbox = (RelativeLayout) findViewById(R.id.rl_outbox); rl_outbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent it = new Intent(MessageFolderActivity.this, MessageBoxActivity.class); Bundle bundle = new Bundle(); bundle.putString("boxType", "outbox"); bundle.putString("msgCount", Integer.toString(count_outbox)); it.putExtras(bundle); startActivity(it); } }); // process of clicked sent final RelativeLayout rl_sent = (RelativeLayout) findViewById(R.id.rl_sent); rl_sent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent it = new Intent(MessageFolderActivity.this, MessageBoxActivity.class); Bundle bundle = new Bundle(); bundle.putString("boxType", "sent"); bundle.putString("msgCount", Integer.toString(count_sent)); it.putExtras(bundle); startActivity(it); } }); // process of clicked drafts final RelativeLayout rl_drafts = (RelativeLayout) findViewById(R.id.rl_drafts); rl_drafts.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent it = new Intent(MessageFolderActivity.this, MessageBoxActivity.class); Bundle bundle = new Bundle(); bundle.putString("boxType", "drafts"); bundle.putString("msgCount", Integer.toString(count_drafts)); it.putExtras(bundle); startActivity(it); } }); // process of clicked simcard if(MessageUtils.isMSMS){ final RelativeLayout rl_simcard1 = (RelativeLayout) findViewById(R.id.rl_simcard1); rl_simcard1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(simCardReady(0)){ // Intent intent=new Intent(MessageFolderActivity.this, ManageSimMessages.class); // intent.putExtra(Phone.PHONE_ID,0); // startActivity(intent); Intent it = new Intent(MessageFolderActivity.this,MessageBoxActivity.class); Bundle bundle = new Bundle(); bundle.putString("boxType", "simcard"); bundle.putString("msgCount", count_simcard1+""); bundle.putInt("phoneId", 0); it.putExtras(bundle); startActivity(it); }else{ Toast.makeText(MessageFolderActivity.this, getString(R.string.sim_no_ready), Toast.LENGTH_LONG) .show(); } } }); final RelativeLayout rl_simcard2 = (RelativeLayout) findViewById(R.id.rl_simcard2); rl_simcard2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(simCardReady(1)){ // Intent intent=new Intent(MessageFolderActivity.this, ManageSimMessages.class); // intent.putExtra(Phone.PHONE_ID,1); // startActivity(intent); Intent it = new Intent(MessageFolderActivity.this,MessageBoxActivity.class); Bundle bundle = new Bundle(); bundle.putString("boxType", "simcard"); bundle.putString("msgCount", count_simcard2+""); bundle.putInt("phoneId", 1); it.putExtras(bundle); startActivity(it); }else{ Toast.makeText(MessageFolderActivity.this, getString(R.string.sim_no_ready), Toast.LENGTH_LONG) .show(); } } }); }else{ final RelativeLayout rl_simcard = (RelativeLayout) findViewById(R.id.rl_simcard); rl_simcard.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent it = new Intent(MessageFolderActivity.this, MessageBoxActivity.class); Bundle bundle = new Bundle(); if (!isAnySmsReady()) { Toast.makeText(MessageFolderActivity.this, getString(R.string.sim_no_ready), Toast.LENGTH_LONG) .show(); } else if ("0".equals(count_simcard)) { bundle.putString("boxType", "simcard"); bundle.putString("msgCount", "0"); it.putExtras(bundle); startActivity(it); } else { bundle.putString("boxType", "simcard"); bundle.putString("msgCount", count_simcard); it.putExtras(bundle); startActivity(it); } } }); } if (MmsApp.initMms) { Conversation.init(this, true); } } public boolean isAnySmsReady() { if ((TelephonyManager.getPhoneCount() <= 1 && mSmsReady[0]) || (TelephonyManager.getPhoneCount() > 1 && (mSmsReady[0] || mSmsReady[1]))) { return true; } else { return false; } } @Override protected void onStart() { super.onStart(); // Listen for broadcast intents that indicate the SMS is ready IntentFilter filter = new IntentFilter(); if(MessageUtils.isMSMS){ filter.addAction(PhoneFactory.getAction(TelephonyIntents.ACTION_IS_SIM_SMS_READY, 0)); filter.addAction(PhoneFactory.getAction(TelephonyIntents.ACTION_IS_SIM_SMS_READY, 1)); }else{ filter.addAction(TelephonyIntents.ACTION_IS_SIM_SMS_READY); } registerReceiver(mReceiver, filter); // Listen for receive mms registerReceiver(mMmsReceiver, new IntentFilter(mMmsReceiveAction)); // Listen for send sms registerReceiver(mSmsSender, new IntentFilter(mSmsSendAction)); // Listen for send mms registerReceiver(mMmsSender, new IntentFilter(PushReceiver.NOTIFY_SHOW_MMS_REPORT_ACTION)); // Listen for receive sms registerReceiver(mSmsReceiver, new IntentFilter(mSmsInsertAction)); //Listen for sim card store message registerReceiver(mSimStoreMsg,new IntentFilter(mSimStoreAction)); } @Override protected void onResume() { super.onResume(); setLayout(); new GetMsgInboxCountTask().execute((Void)null); new GetMsgOutboxCountTask().execute((Void)null); new GetMsgSentCountTask().execute((Void)null); new GetMsgDraftCountTask().execute((Void)null); if(MessageUtils.isMSMS){ if(simCardReady(0)){ new GetMsgSimCountTaskEx(0).execute((Void)null); } if(simCardReady(1)){ new GetMsgSimCountTaskEx(1).execute((Void)null); } }else{ if(simCardReady(0)){ new GetMsgSimCountTask().execute((Void)null); } } } @Override protected void onDestroy() { super.onDestroy(); if (mReceiver != null) { unregisterReceiver(mReceiver); } if (mMmsReceiver != null) { unregisterReceiver(mMmsReceiver); } if (mSmsSender != null) { unregisterReceiver(mSmsSender); } if (mMmsSender != null) { unregisterReceiver(mMmsSender); } if (mSmsReceiver != null) { unregisterReceiver(mSmsReceiver); } if (mSimStoreMsg != null) { unregisterReceiver(mSimStoreMsg); } Conversation.dismissInitConcatCacheDialog(); } private void initResource() { inbox_num = (TextView) findViewById(R.id.inbox_num); outbox_num = (TextView) findViewById(R.id.outbox_num); sent_num = (TextView) findViewById(R.id.sent_num); drafts_num = (TextView) findViewById(R.id.drafts_num); if(MessageUtils.isMSMS){ simcard_num1 = (TextView) findViewById(R.id.simcard_num1); simcard_num2 = (TextView) findViewById(R.id.simcard_num2); }else{ simcard_num = (TextView) findViewById(R.id.simcard_num); } } private void setLayout() { //inbox_num.setText(getString(R.string.load_count)); //outbox_num.setText(getString(R.string.load_count)); //sent_num.setText(getString(R.string.load_count)); //drafts_num.setText(getString(R.string.load_count)); if(MessageUtils.isMSMS){ simcard_num1.setText(getString(R.string.load_count)); simcard_num2.setText(getString(R.string.load_count)); if(simCardReady(0)){ LinearLayout rl_sim1 = (LinearLayout) findViewById(R.id.rl_simcard1_l); if(rl_sim1 != null){ rl_sim1.setVisibility(View.VISIBLE); } }else{ LinearLayout rl_sim1 = (LinearLayout) findViewById(R.id.rl_simcard1_l); if(rl_sim1 != null){ rl_sim1.setVisibility(View.GONE); } } if(simCardReady(1)){ LinearLayout rl_sim2 = (LinearLayout) findViewById(R.id.rl_simcard2_l); if(rl_sim2 != null){ rl_sim2.setVisibility(View.VISIBLE); } }else{ LinearLayout rl_sim2 = (LinearLayout) findViewById(R.id.rl_simcard2_l); if(rl_sim2 != null){ rl_sim2.setVisibility(View.GONE); } } LinearLayout rl_sim = (LinearLayout) findViewById(R.id.rl_simcard_l); if(rl_sim != null){ rl_sim.setVisibility(View.GONE); } }else{ simcard_num.setText(getString(R.string.load_count)); LinearLayout rl_sim = (LinearLayout) findViewById(R.id.rl_simcard_l); if(rl_sim != null){ rl_sim.setVisibility(View.VISIBLE); } LinearLayout rl_sim1 = (LinearLayout) findViewById(R.id.rl_simcard1_l); if(rl_sim1 != null){ rl_sim1.setVisibility(View.GONE); } LinearLayout rl_sim2 = (LinearLayout) findViewById(R.id.rl_simcard2_l); if(rl_sim2 != null){ rl_sim2.setVisibility(View.GONE); } } } /* * obtain count of messages */ private int getMsgCount(Uri mmsUri, Uri smsUri) { Cursor cur_mms = null; Cursor cur_sms = null; int count_mms = 0; int count_sms = 0; if (mmsUri != null) { if(mmsUri.equals(uri_inbox_mms) || mmsUri.equals(uri_mms)){ cur_mms = getContentResolver() .query(mmsUri, null, "m_type != 134", null, null); }else{ cur_mms = getContentResolver() .query(mmsUri, null, null, null, null); } } if (smsUri != null) { cur_sms = getContentResolver() .query(smsUri, null, null, null, null); } if (cur_mms != null) { try { count_mms = cur_mms.getCount(); } finally { cur_mms.close(); } } if (cur_sms != null) { try { count_sms = cur_sms.getCount(); } finally { cur_sms.close(); } } return count_mms + count_sms; } private int getUnreadCount(Uri mmsUri, Uri smsUri) { Cursor cur_mms = null; Cursor cur_sms = null; int count_mms = 0; int count_sms = 0; if (mmsUri != null) { if(mmsUri.equals(uri_inbox_mms) || mmsUri.equals(uri_mms)){ cur_mms = getContentResolver() .query(mmsUri, null, "read = 0 AND m_type != 134", null, null); }else{ cur_mms = getContentResolver() .query(mmsUri, null, "read = ?", new String[]{"0"}, null); } } if (smsUri != null) { cur_sms = getContentResolver() .query(smsUri, null, "read = ?", new String[]{"0"}, null); } if (cur_mms != null) { try { count_mms = cur_mms.getCount(); } finally { cur_mms.close(); } } if (cur_sms != null) { try { count_sms = cur_sms.getCount(); } finally { cur_sms.close(); } } return count_mms + count_sms; } @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.clear(); menu.add(0, MENU_MSG_LIST, 0, R.string.menu_msg_list).setIcon( R.drawable.ic_menu_list); menu.add(0, MENU_COMPOSE_NEW, 0, R.string.menu_compose_new).setIcon( com.android.internal.R.drawable.ic_menu_compose); menu.add(0, MENU_SEARCH, 0, android.R.string.search_go) .setIcon(android.R.drawable.ic_menu_search) .setAlphabeticShortcut(android.app.SearchManager.MENU_KEY); menu.add(0, MENU_PREFERENCES, 0, R.string.menu_preferences).setIcon( com.android.internal.R.drawable.ic_menu_preferences); menu.add(0, MENU_CBSMS, 0, R.string.cell_broadcast_sms).setIcon( R.drawable.menu_cb); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_COMPOSE_NEW: Intent itnew = new Intent(this, ComposeMessageActivity.class); startActivity(itnew); break; case MENU_PREFERENCES: if(MessageUtils.isMSMS){ Intent intent = new Intent(this, MessagingPreferenceActivity.class); Bundle bundle = new Bundle(); bundle.putString("mode", "folder"); intent.putExtras(bundle); startActivityIfNeeded(intent, -1); }else{ if (isAnySmsReady()) { Intent intent = new Intent(this, MessagingPreferenceActivity.class); Bundle bundle = new Bundle(); bundle.putString("mode", "folder"); intent.putExtras(bundle); startActivityIfNeeded(intent, -1); } else { Toast.makeText(this, this.getResources().getString(R.string.sim_no_ready), Toast.LENGTH_LONG).show(); } } break; case MENU_MSG_LIST: Intent it = new Intent(this, ConversationList.class); setLaunchMode(MMS_LAUNCH_MODE_PATH, "conversation"); Bundle bundle = new Bundle(); bundle.putBoolean("fromFolder", true); it.putExtras(bundle); startActivity(it); this.finish(); break; case MENU_SEARCH: onSearchRequested(); break; case MENU_CBSMS: final Intent intent = new Intent(MessageFolderActivity.this, CellBroadcastSmsActivity.class); startActivity(intent); break; default: return true; } return false; } private class GetMsgInboxCountTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { count_inbox = getMsgCount(uri_inbox_mms, uri_inbox_sms); count_unread = getUnreadCount(uri_inbox_mms, uri_inbox_sms); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); inbox_num.setText("(" + Integer.toString(count_unread) + "/" + Integer.toString(count_inbox) + ")"); } } private class GetMsgOutboxCountTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } Cursor cursor = null; String mStr = " * from (select a.address as _id,threads.recipient_ids as recipient_ids,a.date as date,body as sub, '' as sub_cs,thread_id as thread_id,a._id as msg_id,a.read as read,'s' as msg_type from (select * from sms where (type=4 or type=5 or type=6) group by date) a left join threads on threads._id = a.thread_id union select b.address as _id,threads.recipient_ids as recipient_ids,b.date * 1000 as date,b.sub as sub,b.sub_cs as sub_cs,b.thread_id as thread_id,b._id as msg_id,b.read as read,'m' as msg_type from (select * from pdu,addr where (msg_box=4 or msg_box=5 or msg_box=6) and addr.type=137 and pdu._id = addr.msg_id group by date) b left join threads on threads._id = b.thread_id) --"; try{ cursor = getContentResolver().query(uri_inbox_mms, new String[] { mStr }, null, null, null); if (cursor != null) { count_outbox = cursor.getCount(); } } finally { if (cursor != null) { cursor.close(); } } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); outbox_num.setText("(" + Integer.toString(count_outbox) + ")"); } } private class GetMsgSentCountTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } Cursor cursor = null; String mStr = " * from (select a.address as _id,threads.recipient_ids as recipient_ids,a.date as date,body as sub, '' as sub_cs,thread_id as thread_id,a._id as msg_id,a.read as read,'s' as msg_type from (select * from sms where type=2 group by date) a left join threads on threads._id = a.thread_id union select b.address as _id,threads.recipient_ids as recipient_ids,b.date * 1000 as date,b.sub as sub,b.sub_cs as sub_cs,b.thread_id as thread_id,b._id as msg_id,b.read as read,'m' as msg_type from (select * from pdu,addr where msg_box=2 and pdu._id = addr.msg_id group by date) b left join threads on threads._id = b.thread_id) --"; try{ cursor = getContentResolver().query(uri_inbox_mms, new String[] { mStr }, null, null, null); count_sent = cursor.getCount(); } finally { cursor.close(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); sent_num.setText("(" + Integer.toString(count_sent) + ")"); } } private class GetMsgDraftCountTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } count_drafts = getMsgCount(uri_drafts_mms, uri_drafts_sms); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); drafts_num.setText("(" + Integer.toString(count_drafts) + ")"); } } private class GetMsgSimCountTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { if (simCardReady(0)) { String capaStr = ""; try { SmsManager smsManager = SmsManager.getDefault(0); capaStr = smsManager.getSimCapacity(); } catch (NullPointerException e) { capaStr = " : "; } String[] splitStr = capaStr.split(":"); count_simcard = splitStr[0]; } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if (simCardReady(0)) { if(count_simcard == "") { simcard_num.setText("(0)"); } else { simcard_num.setText("(" + count_simcard + ")"); } } else { simcard_num.setText("(0)"); } } } private class GetMsgSimCountTaskEx extends AsyncTask<Void, Void, Void> { int mPhoneId = 0; GetMsgSimCountTaskEx(int PhoneId){ mPhoneId = PhoneId; } @Override protected Void doInBackground(Void... params) { //Modify for Dualsim String capaStr = ""; if(mPhoneId == 0 && simCardReady(0)){ try { SmsManager smsManager = SmsManager.getDefault(0); capaStr = smsManager.getSimCapacity(); } catch (NullPointerException e) { capaStr = " : "; } String[] splitStr = capaStr.split(":"); count_simcard1 = splitStr[0]; } if(mPhoneId == 1 && simCardReady(1)){ try { SmsManager smsManager = SmsManager.getDefault(1); capaStr = smsManager.getSimCapacity(); } catch (NullPointerException e) { capaStr = " : "; } String[] splitStr = capaStr.split(":"); count_simcard2 = splitStr[0]; } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if(mPhoneId == 0){ if(simCardReady(0)){ simcard_num1.setText("(" + count_simcard1 + ")"); }else{ simcard_num1.setText("(0)"); } } if(mPhoneId == 1){ if(simCardReady(1)){ simcard_num2.setText("(" + count_simcard2 + ")"); }else{ simcard_num2.setText("(0)"); } } } } private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(TelephonyIntents.ACTION_IS_SIM_SMS_READY) ||action.equals(PhoneFactory.getAction(TelephonyIntents.ACTION_IS_SIM_SMS_READY,0))) { mSmsReady[0] = intent.getBooleanExtra("isReady", false); } else if (action.equals(TelephonyIntents.ACTION_IS_SIM_SMS_READY1)) { mSmsReady[1] = intent.getBooleanExtra("isReady", false); } } }; private final BroadcastReceiver mSmsReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(mSmsInsertAction)) { new GetMsgInboxCountTask().execute((Void) null); } } }; private final BroadcastReceiver mMmsReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(mMmsReceiveAction)) { new GetMsgInboxCountTask().execute((Void)null); } } }; private final BroadcastReceiver mSmsSender = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(mSmsSendAction)) { new GetMsgOutboxCountTask().execute((Void)null); new GetMsgSentCountTask().execute((Void)null); } } }; private final BroadcastReceiver mMmsSender = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(PushReceiver.NOTIFY_SHOW_MMS_REPORT_ACTION)) { new GetMsgOutboxCountTask().execute((Void)null); new GetMsgSentCountTask().execute((Void)null); } } }; // for simcard msg count not upate private final BroadcastReceiver mSimStoreMsg = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction();Log.e("MessageFolderActivity", "isMSMS:"+MessageUtils.isMSMS); if (MessageUtils.isMSMS) { if (action.equals(mSimStoreAction)) { Log.d("MessageFolderActivity", "simcard store broadcast arrive" + action); if (simCardReady(0)) { new GetMsgSimCountTaskEx2(0).execute((Void) null); } if (simCardReady(1)) { new GetMsgSimCountTaskEx2(1).execute((Void) null); } } } else { if (action.equals(mSimStoreAction)) { new GetMsgSimCountTask().execute((Void) null); } } } }; private class GetMsgSimCountTaskEx2 extends AsyncTask<Void, Void, String> { int mPhoneId = 0; GetMsgSimCountTaskEx2(int PhoneId) { mPhoneId = PhoneId; } @Override protected String doInBackground(Void... params) { String capaStr = ""; String[] splitStr = null; if (mPhoneId == 0 && simCardReady(0)) { try { SmsManager smsManager = SmsManager.getDefault(0); capaStr = smsManager.getSimCapacity(); } catch (NullPointerException e) { capaStr = " : "; } splitStr = capaStr.split(":"); } else if (mPhoneId == 1 && simCardReady(1)) { try { SmsManager smsManager = SmsManager.getDefault(1); capaStr = smsManager.getSimCapacity(); } catch (NullPointerException e) { capaStr = " : "; } splitStr = capaStr.split(":"); } Log.d("MessageFolderActivity", "TextView =" + splitStr[0]); return splitStr[0]; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); if (mPhoneId == 0) { if (simCardReady(0)) { simcard_num1.setText("(" + result + ")"); } else { simcard_num1.setText("(0)"); } } if (mPhoneId == 1) { if (simCardReady(1)) { simcard_num2.setText("(" + result + ")"); } else { simcard_num2.setText("(0)"); } } } } private void setLaunchMode(String filename, String mode) { try { FileOutputStream is = new FileOutputStream(filename); byte buffer[] = mode.getBytes(); is.write(buffer); is.close(); } catch (Exception e) { e.printStackTrace(); } } private boolean simCardReady(int phoneId){ TelephonyManager telManager = (TelephonyManager) getSystemService( PhoneFactory.getServiceName(Context.TELEPHONY_SERVICE, phoneId)); boolean hasSim = (null != telManager) ? telManager.hasIccCard() : false; if (hasSim && telManager.getSimState() == TelephonyManager.SIM_STATE_READY) { return true; }else{ return false; } } }