2009-11-23 5 views
34

Я хотел бы интегрировать Twitter в свое приложение для Android, чтобы отправлять сообщения в Twitter.twitter integration on android app

+0

это так же просто, как есть ваш любимый торт .. следуйте этому руководству http://tech-papers.org/integrate-twitter-with-android-application/ –

ответ

15

В дополнении к солидному выбору d, вы могли бы:.

  • Использование ACTION_SENDIntents с createChooser(), и если пользователь имеет приложение Twitter установлена ​​(Twidroid) они могут использовать его, чтобы обновить свой статус
  • использовать существующий Twitter Java API, как JTwitter
+0

Я проверил его, чтобы посмотреть, как вы сделали интеграцию и я закончил загрузку. Отличная работа! – SapphireSun

+5

'ACTION_SEND' слишком расплывчато. Gmail и Dropbox имеют право на участие. [Я предлагаю вам фильтр] (http://regis.decamps.info/blog/2011/06/intent-to-open-twitter-client-on-android/) список, основанный на известных именах пакетов. – rds

+0

Удалено с комментариями, обновленными сведениями: я больше не использую JTwitter в своем приложении для Android (и API-интерфейс Twitter и его условия полностью изменились с тех пор, что затрудняет прямую интеграцию). Исходный код приложения, которое я сделал для этого, Конгресс также переместился на: github.com/sunlightlabs/congress-android, но у него больше нет прямой интеграции с Twitter. – Konklone

4

Все, что вам нужно знать об общении с Twitter, это here.

Для отправки HTTP-запросов из вашего приложения, зарегистрируйтесь this guide.

20

Это, как я это делаю

Сначала я сделал диалог для WebView Twitter_Dialog.java

public class Twitter_Dialog extends Dialog 
{ 

static final int      BLUE     = 0xFF6D84B4; 
static final float[]     DIMENSIONS_DIFF_LANDSCAPE = 
                   { 20, 60 }; 
static final float[]     DIMENSIONS_DIFF_PORTRAIT = 
                   { 40, 60 }; 
static final FrameLayout.LayoutParams FILL     = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); 
static final int      MARGIN     = 4; 
static final int      PADDING     = 2; 
static final String     DISPLAY_STRING   = "touch"; 

private String      mUrl; 
private ProgressDialog    mSpinner; 
private WebView      mWebView; 
private LinearLayout     mContent; 
private TextView      mTitle; 

public Twitter_Dialog(Context context, String url) 
{ 
    super(context); 
    mUrl = url; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    mSpinner = new ProgressDialog(getContext()); 
    mSpinner.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    mSpinner.setMessage("Loading..."); 

    mContent = new LinearLayout(getContext()); 
    mContent.setOrientation(LinearLayout.VERTICAL); 
    setUpTitle(); 
    setUpWebView(); 
    Display display = getWindow().getWindowManager().getDefaultDisplay(); 
    final float scale = getContext().getResources().getDisplayMetrics().density; 
    int orientation = getContext().getResources().getConfiguration().orientation; 
    float[] dimensions = (orientation == Configuration.ORIENTATION_LANDSCAPE) ? DIMENSIONS_DIFF_LANDSCAPE : DIMENSIONS_DIFF_PORTRAIT; 
    addContentView(mContent, new LinearLayout.LayoutParams(display.getWidth() - ((int) (dimensions[0] * scale + 0.5f)), display.getHeight() - ((int) (dimensions[1] * scale + 0.5f)))); 
} 

private void setUpTitle() 
{ 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    Drawable icon = getContext().getResources().getDrawable(R.drawable.twitter_icon); 
    mTitle = new TextView(getContext()); 
    mTitle.setText("Website"); 
    mTitle.setTextColor(Color.WHITE); 
    mTitle.setTypeface(Typeface.DEFAULT_BOLD); 
    mTitle.setBackgroundColor(BLUE); 
    mTitle.setPadding(MARGIN + PADDING, MARGIN, MARGIN, MARGIN); 
    mTitle.setCompoundDrawablePadding(MARGIN + PADDING); 
    mTitle.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); 
    mContent.addView(mTitle); 
} 

private void setUpWebView() 
{ 
    mWebView = new WebView(getContext()); 
    mWebView.setVerticalScrollBarEnabled(false); 
    mWebView.setHorizontalScrollBarEnabled(false); 
    mWebView.setWebViewClient(new Twitter_Dialog.DialogWebViewClient()); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    System.out.println(" mURL = "+mUrl); 

    mWebView.loadUrl(mUrl); 
    mWebView.setLayoutParams(FILL); 
    mContent.addView(mWebView); 
} 

private class DialogWebViewClient extends WebViewClient 
{ 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     view.loadUrl(url); 
     return true; 
    } 
    @Override 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
    { 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     Twitter_Dialog.this.dismiss(); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) 
    { 
     super.onPageStarted(view, url, favicon); 
     mSpinner.show(); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) 
    { 
     super.onPageFinished(view, url); 
     String title = mWebView.getTitle(); 
     if (title != null && title.length() > 0){ 
      mTitle.setText(title); 
      if(title.equals("Twitter")){ 
       //This will close the Dialog after tweeting 
       Twitter_Dialog.this.dismiss(); 

      } 
     } 
     mSpinner.dismiss(); 
    } 

} 
} 

// А затем в ваш Main.java

public class Main extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      new Twitter_Dialog(Main.this,"http://twitter.com/?status="+Uri.encode("Twitter Post")).show(); 
    } 

} 
+0

отличный код, но может указать, как отправить изображение с помощью этого кода – Dilip

+0

как можно твитт мое сообщение (оценка моей игры) на твиттере. –

+0

Как я наклоняю массаж после нажатия на кнопку –

0

Всегда идти на новейших технологий, как интеграция щебетать можно легко сделать с помощью Twitter4j, а также API, предоставляемые Twitter, время от времени меняются. Twiter sdk будет хорошим вариантом. U can find the details for it here for twitter4j.

1

Попробуйте с помощью этого простого клиента TwitterEasyClient

Просто добавить разрешения в манифесте

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

И использовать его таким образом:

//setup 
    TwitterDialogFragment twitterDialog = new TwitterDialogFragment.Builder("message","url.com") // 
    .callbackUrl("http://www.website.com") // 
    .consumerKey("XXXXXXXXXXXXXXXXXXXXXX") // 
    .consumerSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") // 
    .urlOAuth("oauth_verifier") // 
    .build(); 

    //show the dialog 
    twitterDialog.show(getSupportFragmentManager(), TwitterDialogFragment.class.getSimpleName()); 
2

Вы можете использовать Twitter Helper для интеграции Twitter в свое приложение для Android. Это очень просто.