[Android] Contacts 다루기. Software Engineering

1. 추가하기
    1) 순차적 방법
             //새로운 Account Data 생성
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, "basic");
values.put(RawContacts.ACCOUNT_NAME, "test");
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);

//등록되었으면 Account 정보 입력
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.DISPLAY_NAME, "tester");
getContentResolver().insert(Data.CONTENT_URI, values);

              이렇게 되면 연락처 생성완료 이후 여기에 이메일 및 기타 다른 정보도 등록할 수 있음

    2) batch를 이용한 방법

//먼저 데이타 ArrayList 생성
//여기서 Lists.newArrayList(); 이 부분은 Google Collection API
ArrayList<ContentProviderOperation> ops = Lists.newArrayList();
int rawContactInsertIndex = ops.size();
//위에서 했던 것처럼 연락처(계정)을 먼저 하나 만들고 그 연락처에 정보를 입력 하는 방식이 아니고
//ContentProviderOperation에 계정과 계정에 연락처 정보를 셋팅하여 한번에 insert하는 방식
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, "basic")
.withValue(RawContacts.ACCOUNT_NAME, contactName)
.build());

ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
    .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
        .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
        .withValue(StructuredName.DISPLAY_NAME, contactName)
        .build());
//여기서 실제 입력을 하게 됨
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

2. 등록된 연락처 목록 가져오기..
    //연락처 정보를 가져오는 content uri
    Uri uri = ContactsContract.Contacts.CONTENT_URI;
    //가져올 컬럼정보  sql쿼리의 select col1, col2 from table1 에서 col1, col2 설정하는 것과 같음
    String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
    };
    //조건 설정 where 절 만드는것과 같음
    String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '0' ";
    String[] selectionArgs = null;
    //정렬
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
    //조회해서 가져온다
    Cursor contactCursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);

출처 : http://wizmain.tistory.com/category/프로그램/안드로이드

[Android] 자기번호 조회하기 Software Engineering

안드로이드폰에서 자기번호 조회하는 방법

1. permission
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2. TelephonyManager 이용
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String myNumber = mTelephonyMgr.getLine1Number();

출처 : http://wizmain.tistory.com/category/프로그램/안드로이드

[Android] ImageButton의 투명 효과 사용하기 Software Engineering

ImageButton에 이미지를 설정하면 버튼 모양에 이미지가 가운데에 보이는데,

이미지 버튼을 사용하면서 테두리가 보고 싶은 사람은 없겠지. 이게 뭐 액자도 아니고 뭔 테두리????


android:background="#a0000000" 를 설정하면 배경이 투명해지므로 버튼 모양을 안봐도 된다.

그래 이렇게 하면 좀 제대로 이미지 버튼 답겠다. :P


#define 매크로 Software Engineering


월급 타면 3가지 주머니에 나눠 담아라.

초보 투자자들이 쉽게 지침으로 삼아 따라 할 수 있는 방법 중에 '3가지 주머니 이론'이란 게 있다. 이 재테크 방법은 투자 전문가 티모시 매카시가 자신의 어머니를 타산지석(他山之石)으로 삼아 생각해낸 재테크 모델이라고 한다. 그의 어머니는 투자에 전혀 소질이 없었던 모양이다. 주식이나 채권은 항상 고점에서 사서 저점에서 팔았다고 한다. 자산배분 전략은 언제나 '몰빵'이어서 매카시는 대학 졸업도 겨우 했다고 한다. 대학 졸업 후 월가에서 투자전문가로 일하면서 매카시는 자신의 어머니와 같은 개인 투자자가 한 둘이 아니라는 것을 알았고 이들을 위해 '3가지 주머니 이론'을 고안해 냈다.

이 이론에 따르면, 돈은 3가지 주머니(혹은 계좌)로 나눠서 관리해야 한다. 바로 ▲생계용(저축) 주머니, ▲오락용(트레이딩) 주머니, 그리고 ▲자산축적용 주머니다. 생활비처럼 자주 왔다갔다 하는 자금은 생계용 주머니에 넣으면 된다. 다소 위험 부담을 안으면서도 고수익을 노려볼 만한 자금은 오락용 주머니에, 그리고 생애(生涯) 주기를 생각해 적정 수익률을 장기적으로 추구할 자금은 자산축적용 주머니에 넣는 것이다.


구체적으로는 오락용 주머니 자금으로는 주식이나 파생상품 등에 투자해 고수익을 노린다. 생계용 주머니와 자산축적용 주머니에는 각각 환금성과 안정성을 고려하여 단기 상품(CMA, 제2금융권 저축 상품 등)과 장기 상품(종신보험, 연금, 장기주택마련저축 등)에 투자하면 된다. 특히 자산축적용 주머니는 본인 자산의 절반 이상을 운용하는 게 좋다.

초보 투자자가 재테크에 성공하려면, 두 가지 문제를 잘 해결해야 한다. 첫 번째가 '위험과 수익의 조화'이고 두 번째가 '분산과 집중'의 조화다. 너무 원금 보장만 생각하면 수익이 나질 않고, 그렇다고 해서 고수익만 노리면 위험 부담이 커진다. 지나치게 자산을 나눠도 수익이 잘 나질 않고, 한 바구니에 다 담았다가 실패하면 재기가 불가능하다. 3가지 주머니 이론은 바로 이런 재테크의 어려움을 해결하는 데 큰 도움이 된다.

박중섭 대신증권 리서치센터 연구위원

1 2 3 4 5 6