"안드로이드 MyFacebookApp 프로젝트 1"의 두 판 사이의 차이

182번째 줄: 182번째 줄:
:→ onCreate 수정됨
:→ onCreate 수정됨
:→ onActivityResult 추가됨
:→ onActivityResult 추가됨
</source>
 
==실행==
*{{키|Ctrl|F11}} 눌러 실행


==같이 보기==
==같이 보기==

2013년 1월 13일 (일) 19:17 판

안드로이드 MyFacebookApp 프로젝트

1 사전 작업

2 새 프로젝트

  • File --- New --- Android Application Project
  • "New Android Application" --- Application Name: My Facebook App[1] --- [Next >]
  • "Configure Project" --- [Next >]
  • "Configure Launcher Icon" --- [Next >]
  • "Create Activity"[2] --- [Next >]
  • "New Blank Activity" --- [Finish]

FacebookSDK를 라이브러리로 지정

  • Package Explorer --- MyFacebookApp 우클릭 --- Properties
  • "Properties for MyFacebookApp" --- Android --- "Library" --- [Add...]
  • "Project Selection" --- FacebookSDK 선택 --- [OK]
  • [OK]

그러면 Problems 창과 Console 창에 오류메시지가 나타난다.

Problems
Jar mismatch! Fix your dependencies	MyFacebookApp		Unknown	Android
Console
[2013-01-13 11:33:31 - MyFacebookApp] Found 2 versions of android-support-v4.jar in the dependency list,
[2013-01-13 11:33:31 - MyFacebookApp] but not all the versions are identical (check is based on SHA-1 only at this time).
[2013-01-13 11:33:31 - MyFacebookApp] All versions of the libraries must be the same at this time.
[2013-01-13 11:33:31 - MyFacebookApp] Versions found are:
[2013-01-13 11:33:31 - MyFacebookApp] Path: D:\workspace\adt\MyFacebookApp\libs\android-support-v4.jar
[2013-01-13 11:33:31 - MyFacebookApp] 	Length: 385685
[2013-01-13 11:33:31 - MyFacebookApp] 	SHA-1: 43c34bc56de78901f234567890123a4567bc890d
[2013-01-13 11:33:31 - MyFacebookApp] Path: D:\workspace\adt\FacebookSDK\libs\android-support-v4.jar
[2013-01-13 11:33:31 - MyFacebookApp] 	Length: 349252
[2013-01-13 11:33:31 - MyFacebookApp] 	SHA-1: 612345c6789012a345b678901a72bc3de890f123
[2013-01-13 11:33:31 - MyFacebookApp] Jar mismatch! Fix your dependencies
→ FacebookSDK와 MyFacebookApp 둘다 android-support-v4.jar를 가지고 있어서 충돌이 나는 것이다.
→ 어느 한쪽을 제거해주면 된다.
  • Package Explorer --- MyFacebookApp --- libs --- android-support-v4.jar 우클릭 --- Delete
  • "Confirm Delete" --- [OK]

이제 오류가 사라졌다. 실행시켜보자.

  • Package Explorer --- MyFacebookApp 우클릭 --- Run as --- 1 Android Application

오류없이 정상적으로 시작은 되는데, 로그인 버튼을 누르면 오류를 내며 중지된다.

3 페이스북 앱ID 발급

  • App ID와 App Secret을 발급받는다.

4 strings.xml 수정

strings.xml를 수정하여 app_id에 페이스북 앱ID를 입력한다.

  • Package Explorer --- MyFacebookApp --- res --- values --- strings.xml 우클릭 --- Open with --- Android Common XML Editor
  • 파일 내용을 다음으로 교체하고 저장
(단, "앱아이디" 부분에는 발급받은 페이스북 앱ID를 입력한다.)
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">My Facebook App</string>
    <string name="app_id">앱아이디</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>

</resources>
<string name="app_id">앱아이디</string>이 추가되었다.

5 AndroidManifest.xml 수정

  • Package --- MyFacebookApp --- AndroidManifest.xml --- Open With --- Android Common XML Editor
  • 파일 내용을 다음으로 교체하고 저장
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myfacebookapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16"
        tools:ignore="OldTargetApi" />

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.myfacebookapp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.facebook.LoginActivity"
            android:label="@string/app_name" />

        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id" />
    </application>

</manifest>
→ android.permission.INTERNET, com.facebook.LoginActivity, com.facebook.sdk.ApplicationId 가 추가되었다.
→ Warning을 없애기 위해 uses-sdk태그에 tools:ignore="OldTargetApi" 옵션을 추가하였다.

6 MainActivity.java 수정

  • Package Explorer --- MyFacebookApp --- src --- com.example.myfacebookapp --- MainActivity.java 더블클릭
  • 파일 내용을 다음으로 교체하고 저장
package com.example.myfacebookapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TextView;

import com.facebook.*;
import com.facebook.model.*;

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// start Facebook Login
		Session.openActiveSession(this, true, new Session.StatusCallback() {

			// callback when session changes state
			@Override
			public void call(Session session, SessionState state, Exception exception) {
				if (session.isOpened()) {

					// make request to the /me API
					Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

						// callback after Graph API response with user object
						@Override
						public void onCompleted(GraphUser user, Response response) {
							if (user != null) {
								TextView textView1 = (TextView) findViewById(R.id.textView1);
								textView1.setText("Hello " + user.getName() + "!");
							}
						}
					});
				}
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
	}
}
→ onCreate 수정됨
→ onActivityResult 추가됨

7 실행

  • Ctrl+F11 눌러 실행

8 같이 보기

9 주석

  1. 앱 이름만 입력하면 프로젝트명과 패키지명은 자동으로 채워진다.
  2. BlankActivity가 기본값

10 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}