Java tutorial
/* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.appsol.sharewithcontact.ui; import com.appsol.apps.devotional.BuildConfig; import com.appsol.apps.devotional.R; import com.appsol.apps.projectcommunicate.classes.Connector; import android.app.SearchManager; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.support.v4.app.FragmentActivity; /** * FragmentActivity to hold the main {@link ContactsListFragment}. On larger screen devices which * can fit two panes also load {@link ContactDetailFragment}. */ public class ContactsListActivity extends FragmentActivity implements ContactsListFragment.OnContactsInteractionListener { // Defines a tag for identifying log entries private static final String TAG = "ContactsListActivity"; private ContactDetailFragment mContactDetailFragment; // If true, this is a larger screen device which fits two panes private boolean isTwoPaneLayout; // True if this activity instance is a search result view (used on pre-HC devices that load // search results in a separate instance of the activity rather than loading results in-line // as the query is typed. private boolean isSearchResultView = false; @Override protected void onCreate(Bundle savedInstanceState) { if (BuildConfig.DEBUG) { // Utils.enableStrictMode(); } super.onCreate(savedInstanceState); // Set main content view. On smaller screen devices this is a single pane view with one // fragment. One larger screen devices this is a two pane view with two fragments. setContentView(R.layout.activity_main_contact); // Check if two pane bool is set based on resource directories isTwoPaneLayout = getResources().getBoolean(R.bool.has_two_panes); // Check if this activity instance has been triggered as a result of a search query. This // will only happen on pre-HC OS versions as from HC onward search is carried out using // an ActionBar SearchView which carries out the search in-line without loading a new // Activity. if (Intent.ACTION_SEARCH.equals(getIntent().getAction())) { // Fetch query from intent and notify the fragment that it should display search // results instead of all contacts. String searchQuery = getIntent().getStringExtra(SearchManager.QUERY); ContactsListFragment mContactsListFragment = (ContactsListFragment) getSupportFragmentManager() .findFragmentById(R.id.contact_list); // This flag notes that the Activity is doing a search, and so the result will be // search results rather than all contacts. This prevents the Activity and Fragment // from trying to a search on search results. isSearchResultView = true; mContactsListFragment.setSearchQuery(searchQuery); // Set special title for search results String title = getString(R.string.contacts_list_search_results_title, searchQuery); setTitle(title); } if (isTwoPaneLayout) { // If two pane layout, locate the contact detail fragment mContactDetailFragment = (ContactDetailFragment) getSupportFragmentManager() .findFragmentById(R.id.contact_detail); } } /** * This interface callback lets the main contacts list fragment notify * this activity that a contact has been selected. * * @param contactUri The contact Uri to the selected contact. */ @Override public void onContactSelected(Uri contactUri) { if (isTwoPaneLayout && mContactDetailFragment != null) { // If two pane layout then update the detail fragment to show the selected contact mContactDetailFragment.setContact(contactUri); } else { // Otherwise single pane layout, start a new ContactDetailActivity with // the contact Uri /* Intent intent = new Intent(this, ContactDetailActivity.class); intent.setData(contactUri); startActivity(intent); */ String id, name = "def", phone, hasPhone = "000"; int idx; Cursor cursor = getContentResolver().query(contactUri, null, null, null, null); if (cursor.moveToFirst()) { idx = cursor.getColumnIndex(ContactsContract.Contacts._ID); id = cursor.getString(idx); cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null); if (cursor.moveToFirst()) { int colIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); hasPhone = cursor.getString(colIdx); } idx = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); name = cursor.getString(idx); } // idx = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); //hasPhone = cursor.getString(idx); Uri uri = Uri.parse("smsto:" + hasPhone); Intent it = new Intent(Intent.ACTION_SENDTO, uri); String sharemessage = "" + "I am using Nsore Devotional and it helps me daily in \n" + "my life with God, keeps me in touch with the word, my Church etc.\n" + " Download it now from: \n " + Connector.parentURL; it.putExtra("sms_body", sharemessage); startActivity(it); } } /** * This interface callback lets the main contacts list fragment notify * this activity that a contact is no longer selected. */ @Override public void onSelectionCleared() { if (isTwoPaneLayout && mContactDetailFragment != null) { mContactDetailFragment.setContact(null); } } @Override public boolean onSearchRequested() { // Don't allow another search if this activity instance is already showing // search results. Only used pre-HC. return !isSearchResultView && super.onSearchRequested(); } }