├── settings.gradle ├── Icon ├── icon.png └── icon.psd ├── app ├── libs │ ├── twitter4j-core-4.0.7.jar │ ├── twitter4j-async-4.0.7.jar │ ├── twitter4j-stream-4.0.7.jar │ └── twitter4j-examples-4.0.7.jar ├── src │ └── main │ │ ├── res │ │ ├── drawable │ │ │ ├── logo.png │ │ │ ├── oval.xml │ │ │ ├── roundrect_white_5dp.xml │ │ │ ├── roundrect_white_opacity.xml │ │ │ ├── roundrect_white_border.xml │ │ │ ├── arrow_up_bold_box.xml │ │ │ ├── chart_areaspline.xml │ │ │ ├── gradient_title.xml │ │ │ ├── download.xml │ │ │ ├── arrow_down_bold_box.xml │ │ │ ├── chevron_down.xml │ │ │ ├── chevron_up.xml │ │ │ ├── check_circle.xml │ │ │ ├── roundrect_red_border.xml │ │ │ ├── plus_circle.xml │ │ │ ├── arrow_right_circle.xml │ │ │ ├── credit_card_outline.xml │ │ │ ├── content_save.xml │ │ │ ├── comment_remove.xml │ │ │ ├── dots_vertical.xml │ │ │ ├── calendar_edit.xml │ │ │ ├── roundrect_white_50dp.xml │ │ │ ├── content_save_off.xml │ │ │ ├── account_multiple_remove.xml │ │ │ ├── link_variant_remove.xml │ │ │ └── link_variant.xml │ │ ├── font │ │ │ ├── noto_sans_bold.otf │ │ │ ├── noto_sans_light.otf │ │ │ └── noto_sans_regular.otf │ │ ├── mipmap │ │ │ └── ic_launcher.png │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-hdpi │ │ │ └── ic_stat_icon.png │ │ ├── drawable-mdpi │ │ │ └── ic_stat_icon.png │ │ ├── drawable-xhdpi │ │ │ └── ic_stat_icon.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-xxhdpi │ │ │ └── ic_stat_icon.png │ │ ├── drawable-xxxhdpi │ │ │ └── ic_stat_icon.png │ │ ├── menu │ │ │ ├── logic_menu.xml │ │ │ ├── user_token_item_menu.xml │ │ │ └── logicpair_menu.xml │ │ ├── values │ │ │ ├── dimen.xml │ │ │ ├── key.xml │ │ │ ├── attrs.xml │ │ │ ├── styles.xml │ │ │ └── colors.xml │ │ └── layout │ │ │ ├── full_recycler_view.xml │ │ │ ├── activity_fav_cleaner.xml │ │ │ ├── view_rounded_button.xml │ │ │ ├── view_oval_image.xml │ │ │ ├── fragment_no_item.xml │ │ │ ├── fragment_report_list.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_hetzer.xml │ │ │ ├── fragment_spotlight.xml │ │ │ ├── fragment_column_header.xml │ │ │ ├── item_logic.xml │ │ │ ├── item_default.xml │ │ │ ├── fragment_title_with_desc.xml │ │ │ ├── fragment_sasarinomari.xml │ │ │ ├── fragment_card_button.xml │ │ │ ├── activity_analytics.xml │ │ │ ├── item_logicpair.xml │ │ │ ├── activity_media_download.xml │ │ │ ├── item_usertoken.xml │ │ │ ├── view_dashboard_card.xml │ │ │ ├── item_sku.xml │ │ │ ├── activity_report_list.xml │ │ │ ├── item_simpleuser.xml │ │ │ ├── activity_logic_pair_edit.xml │ │ │ ├── activity_block_clear.xml │ │ │ ├── activity_token_management.xml │ │ │ └── activity_logicpair.xml │ │ ├── java │ │ └── com │ │ │ └── sasarinomari │ │ │ └── tweeper │ │ │ ├── FavCleaner │ │ │ ├── FavCleaner.kt │ │ │ └── FavCleanerActivity.kt │ │ │ ├── SimplizatedClass │ │ │ ├── Status.kt │ │ │ └── User.kt │ │ │ ├── TwitterErrorCode.kt │ │ │ ├── Billing │ │ │ └── AdRemover.kt │ │ │ ├── FirebaseLogger.kt │ │ │ ├── StringFormatter.kt │ │ │ ├── Base │ │ │ ├── ActivityRefrashReceiver.kt │ │ │ └── BaseActivity.kt │ │ │ ├── Hetzer │ │ │ ├── HetzerReport.kt │ │ │ ├── LogicpairTypeSelectActivity.kt │ │ │ └── HetzerActivity.kt │ │ │ ├── Tweeper.kt │ │ │ ├── SystemEventReceiver.kt │ │ │ ├── NotificationChannels.kt │ │ │ ├── Analytics │ │ │ ├── AnalyticsReport.kt │ │ │ └── AnalyticsNotificationReceiver.kt │ │ │ ├── View │ │ │ ├── OvalImageView.kt │ │ │ ├── DefaultListItem.kt │ │ │ └── DashboardCardView.kt │ │ │ ├── Authenticate │ │ │ ├── TokenManagementActivity.kt │ │ │ ├── AuthDataAdapter.kt │ │ │ └── AuthData.kt │ │ │ ├── ChainBlock │ │ │ ├── BlockClearActivity.kt │ │ │ └── BlockClearService.kt │ │ │ ├── TwitterExceptionHandler.kt │ │ │ ├── DialogAdapter.kt │ │ │ ├── Report │ │ │ ├── ReportListActivity.kt │ │ │ └── ReportListFragment.kt │ │ │ ├── MainActivity.kt │ │ │ ├── Permission │ │ │ └── PermissionHelper.java │ │ │ ├── DefaultRecycleAdapter.kt │ │ │ ├── RewardedAdAdapter.kt │ │ │ ├── MediaDownload │ │ │ ├── DownloadReceiver.kt │ │ │ └── MediaDownloadActivity.kt │ │ │ ├── UITestActivity.kt │ │ │ ├── RecyclerInjector.kt │ │ │ └── ScheduledTask │ │ │ └── ScheduleManageActivity.kt │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── WebView ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── sasarinomari │ │ └── webview │ │ ├── WebViewClientInterface.java │ │ ├── WebChromeClientInterface.java │ │ ├── WebViewInterface.java │ │ ├── WebViewLoginAssistant.java │ │ └── WebViewClient.java ├── build.gradle └── proguard-rules.pro ├── .gitignore ├── README.md ├── gradle.properties ├── gradlew.bat ├── policy.txt └── gradlew /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':WebView' 2 | -------------------------------------------------------------------------------- /Icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/Icon/icon.png -------------------------------------------------------------------------------- /Icon/icon.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/Icon/icon.psd -------------------------------------------------------------------------------- /app/libs/twitter4j-core-4.0.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/libs/twitter4j-core-4.0.7.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/libs/twitter4j-async-4.0.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/libs/twitter4j-async-4.0.7.jar -------------------------------------------------------------------------------- /app/libs/twitter4j-stream-4.0.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/libs/twitter4j-stream-4.0.7.jar -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/drawable/logo.png -------------------------------------------------------------------------------- /app/libs/twitter4j-examples-4.0.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/libs/twitter4j-examples-4.0.7.jar -------------------------------------------------------------------------------- /app/src/main/res/font/noto_sans_bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/font/noto_sans_bold.otf -------------------------------------------------------------------------------- /app/src/main/res/font/noto_sans_light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/font/noto_sans_light.otf -------------------------------------------------------------------------------- /app/src/main/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/font/noto_sans_regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/font/noto_sans_regular.otf -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/FavCleaner/FavCleaner.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper.FavCleaner 2 | 3 | class FavCleaner { 4 | } -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_stat_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/drawable-hdpi/ic_stat_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_stat_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/drawable-mdpi/ic_stat_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_stat_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/drawable-xhdpi/ic_stat_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_stat_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/drawable-xxhdpi/ic_stat_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_stat_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SasarinoMARi/Tweeper/HEAD/app/src/main/res/drawable-xxxhdpi/ic_stat_icon.png -------------------------------------------------------------------------------- /app/src/main/res/menu/logic_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/oval.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /WebView/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/roundrect_white_5dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/menu/user_token_item_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /WebView/src/main/java/com/sasarinomari/webview/WebViewClientInterface.java: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.webview; 2 | 3 | public interface WebViewClientInterface 4 | { 5 | void onPageFinished( String url ); 6 | boolean shouldOverrideUrlLoading( String url ); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/roundrect_white_opacity.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Jun 21 15:13:11 KST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/SimplizatedClass/Status.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper.SimplizatedClass 2 | 3 | import java.util.* 4 | 5 | class Status(src: twitter4j.Status) { 6 | val id: Long = src.id 7 | val text: String = src.text 8 | val createdAt: Date = src.createdAt 9 | } -------------------------------------------------------------------------------- /WebView/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 28 5 | 6 | defaultConfig { 7 | minSdkVersion 15 8 | targetSdkVersion 28 9 | } 10 | lintOptions { 11 | abortOnError false 12 | } 13 | } 14 | 15 | dependencies { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/TwitterErrorCode.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper 2 | 3 | enum class TwitterStatusCode(val code: Int) { 4 | OK(20), NotFound(404), Unauthrized(403), RateLimitExceeded(429) 5 | } 6 | enum class TwitterErrorCode(val code: Int) { 7 | RateLlimitExceeded(88), UserNotFound(50) 8 | } -------------------------------------------------------------------------------- /app/src/main/res/menu/logicpair_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/roundrect_white_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 10dp 5 | 16dp 6 | 10dp 7 | -------------------------------------------------------------------------------- /WebView/src/main/java/com/sasarinomari/webview/WebChromeClientInterface.java: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.webview; 2 | 3 | import android.content.Intent; 4 | 5 | /** 6 | * Created by MARi on 2018-01-26. 7 | */ 8 | 9 | public interface WebChromeClientInterface 10 | { 11 | void onStartActivityForResult( Intent intent, int RequestCode ); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/full_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arrow_up_bold_box.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/chart_areaspline.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/gradient_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/download.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arrow_down_bold_box.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/chevron_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/chevron_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/check_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/roundrect_red_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/plus_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arrow_right_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/credit_card_outline.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/FavCleaner/FavCleanerActivity.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper.FavCleaner 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | import com.sasarinomari.tweeper.R 6 | 7 | class FavCleanerActivity : AppCompatActivity() { 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_fav_cleaner) 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/content_save.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_fav_cleaner.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/comment_remove.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dots_vertical.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/calendar_edit.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/roundrect_white_50dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/SimplizatedClass/User.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper.SimplizatedClass 2 | 3 | class User(src: twitter4j.User) { 4 | val name: String = src.name 5 | val screenName: String = src.screenName 6 | val profileImageUrl: String = src.profileImageURLHttps 7 | val id: Long = src.id 8 | val bio: String = src.description 9 | 10 | override fun equals(other: Any?): Boolean { 11 | return if (other is User) this.id == other.id else super.equals(other) 12 | } 13 | 14 | override fun hashCode(): Int { 15 | return id.hashCode() 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/Billing/AdRemover.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper.Billing 2 | 3 | import android.content.Context 4 | 5 | class AdRemover(private val context: Context) { 6 | private val key = "ADRemoved" 7 | 8 | fun isAdRemoved() : Boolean { 9 | val prefs = context.getSharedPreferences(key, Context.MODE_PRIVATE) 10 | val flag = prefs.getInt("flag", 0) 11 | return flag == 1 12 | } 13 | internal fun removeAd(){ 14 | val prefs = context.getSharedPreferences(key, Context.MODE_PRIVATE).edit() 15 | prefs.putInt("flag", 1) 16 | prefs.apply() 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/content_save_off.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/FirebaseLogger.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper 2 | 3 | import android.content.Context 4 | import android.os.Bundle 5 | import com.google.firebase.analytics.FirebaseAnalytics 6 | 7 | class FirebaseLogger(context: Context) { 8 | private val firebaseAnalytics = FirebaseAnalytics.getInstance(context) 9 | 10 | fun log(eventName: String, vararg parameters: Pair) { 11 | val bundle = Bundle() 12 | for(param in parameters) { 13 | bundle.putString(param.first, param.second) 14 | } 15 | firebaseAnalytics.logEvent(eventName, bundle) 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/res/values/key.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ca-app-pub-3940256099942544/6300978111 9 | 10 | ca-app-pub-3940256099942544/5224354917 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/StringFormatter.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper 2 | 3 | class StringFormatter { 4 | companion object { 5 | fun extractionString(string: String, startKeyword: String?, endKeyword: String?): String? { 6 | var startIndex = 0 7 | if (startKeyword != null) startIndex = string.indexOf(startKeyword) + startKeyword.length 8 | var endIndex = string.length 9 | if (endKeyword != null) endIndex = string.indexOf(endKeyword, startIndex) 10 | if (endIndex < 0) return null // 트위터 인증 거부한 경우 11 | return string.substring(startIndex, endIndex) 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sasarinomari/tweeper/Base/ActivityRefrashReceiver.kt: -------------------------------------------------------------------------------- 1 | package com.sasarinomari.tweeper.Base 2 | 3 | import android.app.Activity 4 | import android.content.BroadcastReceiver 5 | import android.content.Context 6 | import android.content.Intent 7 | 8 | class ActivityRefrashReceiver(private val activity: Activity): BroadcastReceiver() { 9 | companion object { 10 | const val eventName = "Tweeper_Refrash_Activity" 11 | } 12 | enum class Parameters { 13 | Target 14 | } 15 | 16 | override fun onReceive(p0: Context?, p1: Intent?) { 17 | val target = p1!!.getStringExtra(Parameters.Target.name) 18 | if(target == activity::class.java.name) activity.recreate() 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/view_rounded_button.xml: -------------------------------------------------------------------------------- 1 | 2 |