The Holo version of my popular Android Talon for Twitter app, 100% open-source

Overview

Notice

This was the old version of Talon for Twitter. I have since open-sourced the Material Design version of the app. All future contributions will go to that version. This classic version should be considered "deprecated", but the project will remain up, for anyone that wants to look through it.

The new version of Talon, can be found here: https://github.com/klinker24/talon-twitter-material

Talon for Twitter (Classic) Android Arsenal

Main Drawer

This is the complete version of the Twitter client that I created for Android. It is 100% open source, the only thing that you will have to do plug in is your own API keys.

I made the majority of this app when I was 19 years old, with one high school java class and half of a college one, and you can tell at some places. I know it isn't the prettiest code that you have ever seen, but it works, and it works pretty well! So don't judge too hard on the code, it definitely got better over time :)

As of now, it doesn't have too many comments throughout it, most of it is pretty easy to understand if you just dig for awhile, but as time goes on, I will go through and attempt to comment more of it.

What you can use this for

There are some pretty neat things in this app, not just twitter related either. Someone looking at this can get the full rundown of things like:

  1. theme engine
  2. windowed advances
  3. clickable links
  4. emoji support
  5. simple and extendable wearable app
  6. plenty of other gems that Jacob and I spent a lot of time on.

Feel free to use this as a resource for those kinds of thing, that's one of the reasons I wanted to open source it in the first place. Lots to learn from a big project like this, and I think that is pretty important with the ever changing world of Android.

I ask that you do not redistribute this application for your own gain though. If you make a build and want to share it with people, that's great, that's what this should be for. Do not charge them for that build though. I have spent a hard year creating this project and this is what I ask if you choose to make it for yourself.

Compiling Talon

Please don't try to compile it as an ANT build. I beg you, just use Android Studio or IntelliJ and compile it with Gradle. It will make your life so much easier and I will not be answering questions about dependencies and compiling for Eclipse. We spent a long time changing all of our projects over to Gradle and I want it to help some people.

To compile it:

  1. Check out the project with a git clone
  2. You can compile it from the command line by CDing into the folder then ./gradlew assembleDebug
  3. Import it to IntelliJ or Android Studio by going to File -> Import Project... then selecting the build.gradle file in the root of the project

To get your Twitter API key, go through these steps:

  1. sign in on their developer site (https://apps.twitter.com/)
  2. Click Create New App You will have to implement a callback url.
  3. Choose a name, description, and website. These are all required and unique to your app, but it makes no difference what you call them. Anything will work here.
  4. For the callback URL, you can do anything you like, but to have it work out of the box, use: http://www.talonforandroid.com
  • If you want a different one (stressing that it really DOES NOT matter..) then change it in the LoginActivity under com.klinker.android.twitter.ui.setup
  1. Read and accept their Rules of the Road, then Create your Twitter Application
  2. After it is created, you can change the icon and add some other info from the settings page.
  3. You NEED to go to the Permissions page of the app and select the Read, Write and Access direct messages option, or else you won't be able to do anything but view your timeline.
Adding API Keys to the app

In the .gitignore file, I have ignored secrets.properties which should contain your keys. Go ahead, copy the secrets.properties.sample to secrets.properties and fill in the keys in it.

This allows me to keep the keys out of source control, but still build the app without any hassle.

Providing a Signing Configuration

For release builds, add your keystore simply as keystore to the root of the project, then add a keystore.properties file to the root with (no quotation marks around these strings!):

KEY_SIGNATURE=xxxx
KEY_ALIAS=xxxx

Pull Requests

One of the reasons that I decided to open source this wasn't just because people would be able to learn from it. I also need help. There are somethings that I just don't know how to do any better. I don't have experience or knowledge yet to understand what is going wrong with them or why they randomly fail for some people.

I have done the absolute best I can with this app, but the more minds working on it, the better. Chances are if you are here and actually reading the readme, you have far more experience programming than me anyways and know how things can be improved.

Issues

If you think something could be done better, then tell me. I am not saying that I will agree with you on it or that it will ever be the way you think it should be, but there is no hurt in asking.

Wrap Up

There isn't to much more I have to say about this. I have put a ton of time and effort into this project and I truly hope that this helps someone out there. Take the leap, try something you never have before, see what you can learn from me and my mistakes.

Let me know if you have questions and I will answer them to the best of my ability.

Thanks and have fun with Talon!

Luke Klinker (Klinker Apps Lead Developer)


License

Copyright 2014 Luke Klinker

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • cannot login

    cannot login

    displays an error saying "cant login,your device might time settings might not be automatic" even after setting the device time settings to automatic

    opened by SheikhZayed 10
  • Added Long tweet multi-split feature

    Added Long tweet multi-split feature

    The feature allows for splitting of long tweets into multiple numbered tweets of the form (xx/nn) after the tweet. It also uses the scheduler to schedule the tweets so we don't hit the Twitter rate limit.

    I have also tried to refactor the code that I have touched. Please do provide your comments. And thanks for all the hard work done.

    opened by wolverine2k 4
  • Library not found: org.apache.http.legacy

    Library not found: org.apache.http.legacy

    I am trying to rebuild Talon for my personal use, but it is not working, I am getting this error:

    Error: A problem occurred configuring root project 'Talon-for-Twitter'.

    Unable to find optional library: org.apache.http.legacy

    opened by mcbyte-it 4
  • Build fails: could not find com.lapism:searchview:2.2

    Build fails: could not find com.lapism:searchview:2.2

    Hey, I'm getting this error while trying to build Talon. I guess, version 2.2 of this artifact was removed from bintray (google index still remembers the page).

    P.S. actually, I'm surprised you don't have Travis CI, if you are interested I could make a PR and integrate Talon with it, then we could detect failures like this one earlier :)

    ./gradlew assembleDebug
    Incremental java compilation is an incubating feature.
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    A problem occurred configuring root project 'Talon-for-Twitter'.
    > Could not resolve all dependencies for configuration ':_debugCompile'.
       > Could not find com.lapism:searchview:2.2.
         Searched in the following locations:
             https://repo1.maven.org/maven2/com/lapism/searchview/2.2/searchview-2.2.pom
             https://repo1.maven.org/maven2/com/lapism/searchview/2.2/searchview-2.2.jar
             https://jcenter.bintray.com/com/lapism/searchview/2.2/searchview-2.2.pom
             https://jcenter.bintray.com/com/lapism/searchview/2.2/searchview-2.2.jar
             https://oss.sonatype.org/content/repositories/snapshots/com/lapism/searchview/2.2/searchview-2.2.pom
             https://oss.sonatype.org/content/repositories/snapshots/com/lapism/searchview/2.2/searchview-2.2.jar
             file:/L/repos/other/Talon-for-Twitter/lib/searchview-2.2.jar
             file:/L/repos/other/Talon-for-Twitter/lib/searchview.jar
             file:/L/soft/android-sdk-linux/sdk/extras/android/m2repository/com/lapism/searchview/2.2/searchview-2.2.pom
             file:/L/soft/android-sdk-linux/sdk/extras/android/m2repository/com/lapism/searchview/2.2/searchview-2.2.jar
             file:/L/soft/android-sdk-linux/sdk/extras/google/m2repository/com/lapism/searchview/2.2/searchview-2.2.pom
             file:/L/soft/android-sdk-linux/sdk/extras/google/m2repository/com/lapism/searchview/2.2/searchview-2.2.jar
         Required by:
             :Talon-for-Twitter:unspecified
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    BUILD FAILED
    
    Total time: 4.519 secs
    
    
    opened by karlicoss 3
  • Display quoted tweets

    Display quoted tweets

    With Twitters new quoted retweets Talon just displays the link to the original tweet. It would be good if this could be displayed in a similar manner to the Twitter website.

    opened by AverageMarcus 3
  • replace AsyncTask with AsyncTaskLoader

    replace AsyncTask with AsyncTaskLoader

    Hello, I'm doing research on Android async programming. Some articles (for example this article) mention that AsyncTask leads to memory leak and losing task result when there's a configuration change (such as orientation change). Android docs recommend AsyncTaskLoader, which avoid the problems in AsyncTask.

    I try to replace one AsyncTask with AsyncTaskLoader in Talon-for-Twitter in this pr (you don't have to merge). Do you think AsyncTaskLoader will work better for Talon-for-Twitter? Do you want to replace all AsyncTask to AsyncTaskLoader?

    opened by yulin2 3
  • Deprecation of legacy Direct Message Endpoints in June 2018

    Deprecation of legacy Direct Message Endpoints in June 2018

    Hello there!

    This is just for your information, that legacy Direct Message endpoints will be shut off in June 2018, in case I didn't read that wrong: https://twittercommunity.com/t/date-for-full-deprecation-of-user-streams-site-streams-and-legacy-direct-message-api-endpoints/98734

    Thank you for your great work!

    opened by sleeksorrow 2
  • fix: string without leading whitespaces become hashtag

    fix: string without leading whitespaces become hashtag

    strings without leading whitespace (e.g. "this#hashtag is not hashtag") don't become hashtag in Twitter. Changed hashtag pattern from #[HASHTAG_TEXT] to [SPACES]#[HASHTAG_TEXT]

    opened by zfhrp6 2
  • Crash when search gif in a tweet

    Crash when search gif in a tweet

    when u search a gif, he make a crash

    ATAL EXCEPTION: main Process: com.klinker.android.twitter, PID: 2360 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:310) at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253) at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:76) at android.support.v7.app.AlertController.installContent(AlertController.java:213) at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240) at android.app.Dialog.dispatchOnCreate(Dialog.java:394) at android.app.Dialog.show(Dialog.java:295) at com.klinker.android.twitter.ui.GiphySearch$6.onResponse(GiphySearch.java:139) at com.klinker.android.twitter.utils.api_helper.GiphyHelper$SearchGiffy.onPostExecute(GiphyHelper.java:114) at com.klinker.android.twitter.utils.api_helper.GiphyHelper$SearchGiffy.onPostExecute(GiphyHelper.java:52) at android.os.AsyncTask.finish(AsyncTask.java:651) at android.os.AsyncTask.-wrap1(AsyncTask.java) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148)

    opened by espiguilla 2
  • crash when tapping youtube thumbnails

    crash when tapping youtube thumbnails

    Hi! When I tap on youtube thumbnails, Talon just crashes.

    If this is because I did not put in a youtube api key, then I would suggest to fallback to giving the youtube url to the system to open it in browser/youtube app instead of crashing. ;)

    If that's not the reason, then I'd like to ask for help here.

    Thank you!

    opened by sleeksorrow 2
  • added create channel for service notifications for 8.1 compatibility

    added create channel for service notifications for 8.1 compatibility

    Hi @klinker24 the project was failing on my device that has 8.1 because of notifications, throwing the error: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notification Fixed it by creating a channel and then add the channel when creating the Notification.

    Please let me know what you think.

    opened by rgarza 1
Releases(v4.14.0)
Owner
Luke Klinker
I make cool things @klinker-apps.
Luke Klinker
Share twitter url to this app, and you will be redirected.

twitter2nitter - redirect twitter to nitter Share twitter url to this app, and you will be redirected. Redirect works for: Open twitter url with twitt

null 14 Dec 20, 2022
Library for easy work with Facebook, Twitter, LinkedIn and Google on Android

THIS PROJECT IS NO LONGER MAINTAINED, FEEL FREE TO FORK AND FIX IT FOR YOUR NEEDS There is also an Android Library that is being maintained, CloudRail

Anton Krasov 1k Dec 18, 2022
Easy social network authorization for Android. Supports Facebook, Twitter, Instagram, Google+, Vkontakte. Made by Stfalcon

SocialAuthHelper A library that helps to implement social network authorization (Facebook, Twitter, Instagram, GooglePlus, Vkontakte). Who we are Need

Stfalcon LLC 97 Nov 24, 2022
Login effortlessly with different social networks like Facebook, Twitter or Google Plus

EasyLogin Easy Login in your app with different social networks. Currently supported: Facebook Google Plus Twitter Global Configuration To be able to

Maksim 91 Nov 25, 2022
Simple Twitter Client just for tweeting, written in Kotlin with reactive MVVM-like approach

Monotweety Simple Twitter Client just for tweeting. Monotweety is also available at F-Droid compatible repository called IzzyOnDroid F-Droid Repositor

Yasuhiro SHIMIZU 110 Nov 11, 2022
Yet another Twitter unofficial client for Lollipop.

Tweetin Yet another Twitter unofficial client. Just design for Lollipop now!!! Screenshot: How to use the source code? Just import the Tweetin folder

Matthew Lee 177 Aug 24, 2022
KTweet is a Kotlin Library that allows you to consume the Twitter API v2.

KTweet - A Kotlin Twitter Library KTweet is a library that allows you to use the Twitter API v2. Interested in Kotlin or KTweet? Join the Discord Setu

Thomas Carney 26 Dec 22, 2022
An unofficial open source Reddit client for Android.

RedReader An unofficial, open source Android client for Reddit. Features Free and open-source Software - no ads/tracking Lightweight and fast Swipe po

null 1.4k Jan 7, 2023
Open-source alternative Instagram client on Android.

Instagram client; previously known as InstaGrabber.

Austin Huang 1.1k Jul 23, 2021
Skooter App - Android client source code

Skooter App STAY CONNECTED. LOCALLY Skooter is a FREE mobile application that acts like a Hyper Local Bulletin Board for your area by showing the most

Prathmesh Ranaut 61 Feb 23, 2022
Slide is an open sourced, ad free Reddit browser for Android

Slide Slide is an open source, ad free Reddit browser for Android. It is based around the Java Reddit API Wrapper. Slide is available on the Google Pl

Carlos Crane 1.7k Dec 27, 2022
GitHub client for Android based on the abandoned official app

ForkHub ForkHub started off as a fork of the official Android app from GitHub, and has since seen lots of improvements. You can see a comprehensive li

Jon Ander Peñalba 2.8k Dec 28, 2022
The Google I/O Android App

Google I/O Android App 2021 Update Due to global events, Google I/O 2020 was canceled and Google I/O 2021 is an online-only event, so the companion ap

Google 21.7k Jan 7, 2023
PocketHub Android App

PocketHub This repository contains the source code for the PocketHub Android app. This is the same repository as the now-defunct official GitHub Andro

null 9.4k Dec 27, 2022
The ribot studio app for the Android Platform

Thank you for your interest in ribot’s development work. Unfortunately there are no current plans to make any changes to this project in the near futu

ribot 1.2k Dec 29, 2022
An Android App for Github

A Github Android APP How does it look like ? Feature Last Events Repository Detail User Detail Read formatted code Star repository, follow people Sear

Quinn 492 Jan 3, 2023
YouJoin Android Client, a cool app of connection, use Material Design.

YouJoin-Android 简介 这个repo是YouJoin社交平台的Android客户端,代码由本人独立编写,功能和特点包括: 采用Material Design设计 登录注册 即时聊天 个人中心(支持资料编辑、头像上传) 心情动态(支持最多九张图片;支持点赞、评论) 好友关注 附近的人(采

ZZQ 298 Nov 29, 2022
A app client for Github

Git.NB A android app client for Github. 效果图 关于项目 Git.NB现以升级到2.0,功能大有升级,UI大改版本。各种有趣的操作,欢迎下载代码试完。 如果发现有任何问题和建议,随时欢迎Email或者开Issues, 如果有版权问题,立即删除。 使用的开源技术

null 319 Sep 9, 2022
A clone of the TikTok App using Flutter.

Tik Tok App clone TikTok is an iOS and Android media app for creating and sharing short videos. The app was launched in 2017 by ByteDance, for markets

Maxwell Cofie 211 Dec 19, 2022