Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Cách chuyển activity sau khi đăng nhập app bằng acc Facebook

  1. #1
    Ngày gia nhập
    01 2012
    Bài viết
    7

    Talking Cách chuyển activity sau khi đăng nhập app bằng acc Facebook

    Em đang làm làm 1 app có chức năng đăng nhập bằng acc facebook, em sử dụng sẵn một cái hàm API của gói Facebook SDK.
    Em có 2 cái layout
    - cái layout 1 có button Login, khi bấm vào sẽ chuyển mở hộp thoại đăng nhập vào app
    Code:
      btnLogin.setOnClickListener(new OnClickListener() {
    		
    		@Override
    		public void onClick(View v) {
    			login();
    		}
    	});
    login() là hàm API dùng để đăng nhập = acc facebook
    - layout 2 chứa nội dung app
    khổ cái là khi đăng nhập xong thì nó vẫn hiện ra cái layout 1, bây giờ em muốn sau khi đăng nhập xong nó chuyển sang activity 2 chứa layout 2 thì phải làm thế nào hả các bác. (em nghe nói là có thể dùng hàm callback)
    Hy vọng sớm có câu trả lời,Thanks!

  2. #2
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    em đã bắt được sự kiện login thành công chưa ?
    nếu bắt được rồi thì startActivity thứ 2 lên thôi !
    có thể để bắt sự kiện này Activity1 của em sẽ phải implement 1 interface do FB cung cấp

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Login thường là một task tốn thời gian, vì vậy bạn chỉ nên chạy nó trên background task thôi. Chuyển qua Activity khác thì dùng Intent là xong.
    Cách mà mình xử lý (không chắc tối ưu):
    1) Tạo một AsyncTask để log in với tham số là username/password
    2) Trong hàm onPostExecute(), start một Intent chuyển qua activity khác.
    3) Trong lúc login, tạo một hiệu ứng chờ (ví dụ spinning chẳng hạn) và lưu ý chỉ có những task nào chạy dưới 5 sec thì mới được dùng ở Main Thread (tương đuơng với Event Thread bên Java Swing). Ví dụ
    trong hàm onProgressUpdate() chẳng hạn.
    4) Dùng phần FB logIn thì cứ để vào doInBackground rồi chờ kết quả trả về từ onPostExecute.

    Ví dụ:
    MainActivity.java
    Java Code:
    1. package com.cviet.demo;
    2.  
    3. import java.lang.ref.WeakReference;
    4. import java.util.ArrayList;
    5. import java.util.List;
    6.  
    7. import org.apache.http.NameValuePair;
    8. import org.apache.http.message.BasicNameValuePair;
    9.  
    10. import android.opengl.Visibility;
    11. import android.os.AsyncTask;
    12. import android.os.Bundle;
    13. import android.app.Activity;
    14. import android.content.Intent;
    15. import android.view.Menu;
    16. import android.view.View;
    17. import android.view.View.OnClickListener;
    18. import android.widget.Button;
    19. import android.widget.ProgressBar;
    20.  
    21. public class MainActivity extends Activity {
    22.  
    23.     @Override
    24.     protected void onCreate(Bundle savedInstanceState) {
    25.         super.onCreate(savedInstanceState);
    26.         setContentView(R.layout.activity_main);
    27.         final Button b = (Button) findViewById(R.id.activity_main_xml_button_login);
    28.         final ProgressBar pb = (ProgressBar) findViewById(R.id.activity_main_xml_progressbar);
    29.         b.setOnClickListener(new OnClickListener() {
    30.             @Override
    31.             public void onClick(View v) {
    32.                 pb.setVisibility(0);
    33.                 new LoginTask(MainActivity.this, "username", "password").execute();
    34.             }
    35.         });
    36.     }
    37.  
    38.     private static class LoginTask extends AsyncTask<Void, Integer, Integer> {
    39.         private String username;
    40.         private String password;
    41.         private WeakReference<MainActivity> ref;
    42.  
    43.         public LoginTask(MainActivity a, String username, String password) {
    44.             attach(a);
    45.             this.username = username;
    46.             this.password = password;
    47.         }
    48.  
    49.         @Override
    50.         protected void onPreExecute() {
    51.         }
    52.        
    53.         @Override
    54.         protected void onProgressUpdate(Integer... values) {
    55.            
    56.         }
    57.  
    58.         @Override
    59.         protected Integer doInBackground(Void... voids) {
    60.             // dummy data
    61.             List<NameValuePair> datas = new ArrayList<NameValuePair>();
    62.             datas.add(new BasicNameValuePair("username", username));
    63.             datas.add(new BasicNameValuePair("password", password));
    64.             // dummy user id
    65.             int fakeUserId = 7;
    66.             // pretend some work load
    67.             sleepFor(10);
    68.             return fakeUserId;
    69.         }
    70.  
    71.         @Override
    72.         protected void onPostExecute(Integer userId) {
    73.             ref.get().logIn(userId);
    74.             detach();
    75.         }
    76.  
    77.         public void attach(MainActivity a) {
    78.             ref = new WeakReference<MainActivity>(a);
    79.         }
    80.  
    81.         public void detach() {
    82.             ref.clear();
    83.         }
    84.  
    85.         private void sleepFor(int secs) {
    86.             try {
    87.                 Thread.sleep(secs * 1000);
    88.             } catch (InterruptedException e) {
    89.                 // ignore
    90.             }
    91.         }
    92.  
    93.     }
    94.  
    95.     public void logIn(Integer id) {
    96.         startActivity(new Intent(getApplicationContext(), OtherActivity.class));
    97.         finish();
    98.     }
    99. }

    OtherActivity.java
    Java Code:
    1. package com.cviet.demo;
    2.  
    3. import android.app.Activity;
    4. import android.os.Bundle;
    5.  
    6. public class OtherActivity extends Activity {
    7.     @Override
    8.     protected void onCreate(Bundle savedInstanceState) {
    9.         super.onCreate(savedInstanceState);
    10.         setContentView(R.layout.other_activity);
    11.     }
    12. }

    activity_main.xml
    XML Code:
    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2.    xmlns:tools="http://schemas.android.com/tools"
    3.    android:orientation="vertical"
    4.    android:layout_width="match_parent"
    5.    android:layout_height="match_parent">
    6.  
    7.     <EditText
    8.        android:id="@+id/activity_main_xml_edittext_username"
    9.        android:layout_width="fill_parent"
    10.        android:layout_height="wrap_content"
    11.        android:hint="username"
    12.        android:inputType="textPersonName" />
    13.  
    14.     <EditText
    15.        android:id="@+id/activity_main_xml_edittext_password"
    16.        android:layout_width="fill_parent"
    17.        android:layout_height="wrap_content"
    18.        android:hint="password"
    19.        android:inputType="textPassword" >
    20.     </EditText>
    21.  
    22.     <Button
    23.        android:id="@+id/activity_main_xml_button_login"
    24.        android:layout_width="wrap_content"
    25.        android:layout_height="wrap_content"
    26.        android:text="Log In" />
    27.  
    28.     <ProgressBar
    29.        android:id="@+id/activity_main_xml_progressbar"
    30.        style="?android:attr/progressBarStyleSmall"
    31.        android:visibility="invisible"
    32.        android:layout_width="wrap_content"
    33.        android:layout_height="wrap_content" />
    34.  
    35. </LinearLayout>

    other_activity.xml
    XML Code:
    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2.    xmlns:tools="http://schemas.android.com/tools"
    3.    android:layout_width="match_parent"
    4.    android:layout_height="match_parent">
    5.     <TextView
    6.        android:layout_width="wrap_content"
    7.        android:layout_height="wrap_content"
    8.        android:text="Other Activity">
    9.     </TextView>
    10. </LinearLayout>

    AndroidManifest.xml
    XML Code:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3.    package="com.cviet.demo"
    4.    android:versionCode="1"
    5.    android:versionName="1.0" >
    6.  
    7.     <uses-sdk
    8.        android:minSdkVersion="8"
    9.        android:targetSdkVersion="10" />
    10.  
    11.     <application
    12.        android:allowBackup="true"
    13.        android:icon="@drawable/ic_launcher"
    14.        android:label="@string/app_name"
    15.        android:theme="@style/AppTheme" >
    16.        
    17.         <activity
    18.            android:name=".MainActivity"
    19.            android:label="@string/app_name" >
    20.             <intent-filter>
    21.                 <action android:name="android.intent.action.MAIN" />
    22.                 <category android:name="android.intent.category.LAUNCHER" />
    23.             </intent-filter>
    24.         </activity>
    25.        
    26.         <activity
    27.             android:name=".OtherActivity" >
    28.            <intent-filter>
    29.                 <action android:name="com.cviet.demo.OtherActivity" />
    30.                 <category android:name="android.intent.category.DEFAULT" />
    31.             </intent-filter>
    32.         </activity>
    33.     </application>
    34.  
    35. </manifest>
    Đã được chỉnh sửa lần cuối bởi rox_rook : 09-01-2013 lúc 10:05 AM.

  4. #4
    Ngày gia nhập
    01 2012
    Bài viết
    7

    cám ơn mọi người nhiều
    em cũng mới newbie thôi, cũng chỉ biết bấm button để chuyển activity thôi chứ chưa biết làm sao để chuyển activity sau khi đăng nhập
    hàm login() của em đây
    Code:
    public login() {
        // 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 welcome = (TextView) findViewById(R.id.welcome);
                    welcome.setText("Hello " + user.getName() + "!");
                  }
                }
              });
            }
          }
        });
    }

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    Trích dẫn Nguyên bản được gửi bởi LLawliet Xem bài viết
    cám ơn mọi người nhiều
    em cũng mới newbie thôi, cũng chỉ biết bấm button để chuyển activity thôi chứ chưa biết làm sao để chuyển activity sau khi đăng nhập
    hàm login() của em đây
    Java Code:
    1. public login() {
    2.     // start Facebook Login
    3.     Session.openActiveSession(this, true, new Session.StatusCallback() {
    4.  
    5.       // callback when session changes state
    6.       @Override
    7.       public void call(Session session, SessionState state, Exception exception) {
    8.         if (session.isOpened()) {
    9.  
    10.           // make request to the /me API
    11.           Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
    12.  
    13.             // callback after Graph API response with user object
    14.             @Override
    15.             public void onCompleted(GraphUser user, Response response) {
    16.               if (user != null) {
    17.                 //TextView welcome = (TextView) findViewById(R.id.welcome);
    18.                 //welcome.setText("Hello " + user.getName() + "!");
    19.                startActivity(new Intent(getApplicationContext(), OtherActivity.class));
    20.               }
    21.             }
    22.           });
    23.         }
    24.       }
    25.     });
    26. }

    em thử xem , OtherActivity là cái activity thứ 2 của em nhé

  6. #6
    Ngày gia nhập
    01 2012
    Bài viết
    7

    Mặc định Cách chuyển activity sau khi đăng nhập app bằng acc Facebook

    cảm ơn mọi người, đặc biệt là anh zstar nhé!
    em đã làm theo cách của anh zstar và đã thành công

Các đề tài tương tự

  1. Đăng nhập facebook trên điện thoại di động
    Gửi bởi google_android trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 07-11-2012, 08:28 PM
  2. Đăng nhập facebook khi bị chặn
    Gửi bởi google_android trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 06-11-2012, 08:46 PM
  3. Đăng nhập facebook khi bị chặn
    Gửi bởi google_android trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 05-11-2012, 03:58 PM
  4. Nhận đăng tin rao vặt lên các diễn đàn + web rao vặt, like fanpage facebook giá rẻ
    Gửi bởi gireads123 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 10-06-2012, 08:56 PM
  5. Chuyển 1 list Item giữa 2 activity?
    Gửi bởi netbusxx trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 06-04-2012, 05:15 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn