I try to connect my app with Twitter and return back to my app with user details. But after twitter authentication, it shows return back to app may take few seconds and redirecting to app is get app unfortunately stopped. I don't know why it happens.?
here is my logcat
and my code to twitter connect is
package com.sedio.newsedio;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.net.URL;
import java.util.List;
import org.brickred.socialauth.Contact;
import org.brickred.socialauth.Photo;
import org.brickred.socialauth.Profile;
import org.brickred.socialauth.SocialAuthManager;
import org.brickred.socialauth.android.DialogListener;
import org.brickred.socialauth.android.SocialAuthAdapter;
import org.brickred.socialauth.android.SocialAuthError;
import org.brickred.socialauth.android.SocialAuthListener;
import org.brickred.socialauth.android.SocialAuthAdapter.Provider;
import org.json.JSONArray;
import org.json.JSONObject;
import android.net.Uri;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
public class TwitLoader extends ActionBarActivity {
ImageView email;
ImageView message;
ImageView search;
ImageView fliq_Logo;
Button btn_Login,facebook_login,twiit_login;
TextView T1,t2;
VideoView vd;
Uri uri;
public static final String PREFS_NAME = "LoginPrefs";
ConnectionDetector cd;
AlertDialogManager alert = new AlertDialogManager();
SocialAuthManager socialAuthManager;
Provider currentProvider;
String s1;
String key;
String secret1;
String g;
URL Login_Url;
String login_inputline;
JSONArray login_jsonarray;
JSONObject login_jsonobj;
String login_status;
String User_id;
String accesskey;
String accesstoken;
String geteee;
String getfbid;
String getfbtkn;
String gettusr;
String gettkey;
String getfttkn;
String suuserid;
static String TWITTER_CONSUMER_KEY = "*******";
static String TWITTER_CONSUMER_SECRET = "*********";
String val="false";
Profile profileMap;
List<Photo> photosList;
// Android Components
ListView listview;
AlertDialog dialog;
TextView title;
ProgressDialog mDialog;
// Button twit_out;
// Variables
boolean status;
String providerName;
public static int pos;
public static final int SELECT_PHOTO = 100;
public static Bitmap bitmap;
Context context = this;
String user_id;
private static SocialAuthAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.twit_loader);
email=(ImageView)findViewById(R.id.ImageView01);
message=(ImageView)findViewById(R.id.ImageView02);
adapter = new SocialAuthAdapter(new ResponseListener());
// search=(ImageView)findViewById(R.id.ImageView03);
//showemail();
System.out.println("Entry to email click");
Log.i("click", "1");
adapter.addCallBack(Provider.GOOGLE, "http://socialauth.in/socialauthdemo");
adapter.authorize(context,Provider.FACEBOOK);
Log.i("click", "2");
Twitter_connect.pd.dismiss();
}
public static SocialAuthAdapter getSocialAuthAdapter() {
return adapter;
}
// To receive the response after authentication
private final class ResponseListener implements DialogListener {
@Override
public void onComplete(Bundle values) {
Log.d("Custom-UI", "Successful");
// Changing Sign In Text to Sign Out
//View v = listview.getChildAt(pos - listview.getFirstVisiblePosition());
//TextView pText = (TextView) v.findViewById(R.id.signstatus);
//pText.setText("Sign Out");
// Get the provider
providerName = values.getString(SocialAuthAdapter.PROVIDER);
Log.d("Custom-UI", "providername = " + providerName);
Toast.makeText(TwitLoader.this, providerName + " connected", Toast.LENGTH_SHORT).show();
Log.i("get profile ", "before");
// adapter.getUserProfileAsync(new ProfileDataListener());
adapter.getContactListAsync(new ContactDataListener());
Log.i("get profile ", "after");
int res = getResources().getIdentifier(providerName + "_array", "array", TwitLoader.this.getPackageName());
//Events(0, providerName);
AlertDialog.Builder builder = new AlertDialog.Builder(TwitLoader.this);
builder.setTitle("Select Options");
builder.setCancelable(true);
builder.setIcon(android.R.drawable.ic_menu_more);
mDialog = new ProgressDialog(TwitLoader.this);
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mDialog.setMessage("Loading...");
builder.setSingleChoiceItems(new DialogAdapter(TwitLoader.this, R.layout.provider_options, getResources()
.getStringArray(res)), 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
Log.i("item", ""+item);
//Events(item, providerName);
dialog.dismiss();
}
});
dialog = builder.create();
//dialog.show();
}
@Override
public void onError(SocialAuthError error) {
Log.d("Custom-UI", "Error");
error.printStackTrace();
}
@Override
public void onCancel() {
Log.d("Custom-UI", "Cancelled");
}
@Override
public void onBack() {
Log.d("Custom-UI", "Dialog Closed by pressing Back Key");
}
}
// To receive the profile response after authentication
private final class ContactDataListener implements SocialAuthListener<List<Contact>> {
@Override
public void onExecute(String provider, List<Contact> t) {
Log.d("Custom-UI", "Receiving Data");
mDialog.dismiss();
List<Contact> contactsList = t;
String contactId="";
System.out.println("Contact list value -------->"+contactsList);
System.out.println("size of Contact list value -------->"+contactsList.size());
for (int i=0;i < contactsList.size();i++)
{
System.out.println("Value of element "+contactsList.get(i).getId());
//String[] id=new String[contactsList.size()];
contactId=contactId+","+contactsList.get(i).getId();
//System.out.println("String value of element "+contactId);
//String Id=contactList.get(i).getId(); - slashed by Aravind
//contactId.add(contactList.get(i).getId());
}
System.out.println("String value of element "+contactId);
String contactID=contactId.substring(1);
System.out.println(contactID);
Intent i=new Intent(TwitLoader.this,Twitter_people.class);
i.putExtra("userid", user_id);
i.putExtra("contactID", contactID);
startActivity(i);
}
@Override
public void onError(SocialAuthError e) {
}
}
public class DialogAdapter extends BaseAdapter {
// Android Components
private final LayoutInflater mInflater;
private final Context ctx;
Drawable mIcon;
String[] drawables;
String[] options;
public DialogAdapter(Context context, int textViewResourceId, String[] providers) {
// Cache the LayoutInflate to avoid asking for a new one each time.
ctx = context;
mInflater = LayoutInflater.from(ctx);
options = providers;
}
/**
* The number of items in the list is determined by the number of
* speeches in our array.
*/
@Override
public int getCount() {
return options.length;
}
/**
* Since the data comes from an array, just returning the index is
* sufficent to get at the data. If we were using a more complex data
* structure, we would return whatever object represents one row in the
* list.
*/
@Override
public Object getItem(int position) {
return position;
}
/**
* Use the array index as a unique id.
*/
@Override
public long getItemId(int position) {
return position;
}
/**
* Make a view to hold each row.
*
* @see android.widget.ListAdapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// A ViewHolder keeps references to children views to avoid
// unneccessary
// calls to findViewById() on each row.
ViewHolder holder;
// When convertView is not null, we can reuse it directly, there is
// no
// need to reinflate it. We only inflate a new View when the
// convertView
// supplied by ListView is null.
if (convertView == null) {
convertView = mInflater.inflate(R.layout.provider_options, null);
// Creates a ViewHolder and store references to the two children
// views
// we want to bind data to.
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.providerText);
holder.icon = (ImageView) convertView.findViewById(R.id.provider);
convertView.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
class ViewHolder {
TextView text;
ImageView icon;
}
}
}
0 comments:
Post a Comment