diff --git a/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanConstants.java b/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanConstants.java index ac8930969..59097d075 100644 --- a/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanConstants.java +++ b/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanConstants.java @@ -24,7 +24,7 @@ package org.mariotaku.twidere.nyan; */ public interface NyanConstants { - public static final String SHARED_PREFERENCES_NAME = "nyan_preferences"; + String SHARED_PREFERENCES_NAME = "nyan_preferences"; - public static final String KEY_LIVE_WALLPAPER_SCALE = "live_wallpaper_scale"; + String KEY_LIVE_WALLPAPER_SCALE = "live_wallpaper_scale"; } diff --git a/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanDrawingHelper.java b/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanDrawingHelper.java index a3582079b..717d4e9b4 100644 --- a/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanDrawingHelper.java +++ b/twidere.component.nyan/src/main/java/org/mariotaku/twidere/nyan/NyanDrawingHelper.java @@ -248,10 +248,10 @@ public class NyanDrawingHelper { } - public static interface IDrawingHelper { - public void dispatchOnDraw(final Canvas canvas); + public interface IDrawingHelper { + void dispatchOnDraw(final Canvas canvas); - public void dispatchSizeChanged(final int w, final int h); + void dispatchSizeChanged(final int w, final int h); } public static final class TileBitmapDrawable extends BitmapDrawable { @@ -477,7 +477,7 @@ public class NyanDrawingHelper { 0, 0, 0, 0, 0, 0, 0 } }; - static final byte[][] FRAME2 = { + byte[][] FRAME2 = { { 0, 0, 0, 0, 0, 0, 0 }, @@ -500,7 +500,7 @@ public class NyanDrawingHelper { 0, 0, 0, 0, 0, 0, 0 } }; - static final byte[][] FRAME3 = { + byte[][] FRAME3 = { { 0, 0, 0, 0, 0, 0, 0 }, @@ -523,7 +523,7 @@ public class NyanDrawingHelper { 0, 0, 0, 0, 0, 0, 0 } }; - static final byte[][] FRAME4 = { + byte[][] FRAME4 = { { 0, 0, 0, 1, 0, 0, 0 }, @@ -546,7 +546,7 @@ public class NyanDrawingHelper { 0, 0, 0, 1, 0, 0, 0 } }; - static final byte[][] FRAME5 = { + byte[][] FRAME5 = { { 0, 0, 0, 1, 0, 0, 0 }, @@ -569,7 +569,7 @@ public class NyanDrawingHelper { 0, 0, 0, 1, 0, 0, 0 } }; - static final byte[][] FRAME6 = { + byte[][] FRAME6 = { { 0, 0, 0, 1, 0, 0, 0 }, diff --git a/twidere/src/androidTest/java/org/mariotaku/twidere/util/TwidereArrayUtilsTest.java b/twidere/src/androidTest/java/org/mariotaku/twidere/util/TwidereArrayUtilsTest.java index 9470063e5..64293a258 100644 --- a/twidere/src/androidTest/java/org/mariotaku/twidere/util/TwidereArrayUtilsTest.java +++ b/twidere/src/androidTest/java/org/mariotaku/twidere/util/TwidereArrayUtilsTest.java @@ -17,7 +17,9 @@ public class TwidereArrayUtilsTest { String[] array2 = {"1", "2"}; String[] array3 = null; + //noinspection ConstantConditions String[] merged = new String[TwidereArrayUtils.arraysLength(array1, array2, array3)]; + //noinspection ConstantConditions TwidereArrayUtils.mergeArray(merged, array1, array2, array3); String[] expected = {"1", "2", "1", "2"}; assertArrayEquals(expected, merged); @@ -28,6 +30,7 @@ public class TwidereArrayUtilsTest { String[] array1 = {"1", "2"}; String[] array2 = {"1", "2"}; String[] array3 = null; + //noinspection ConstantConditions assertEquals(4, TwidereArrayUtils.arraysLength(array1, array2, array3)); assertEquals(6, TwidereArrayUtils.arraysLength(array1, array2, array2)); } diff --git a/twidere/src/google/java/org/mariotaku/twidere/fragment/GoogleMapFragment.java b/twidere/src/google/java/org/mariotaku/twidere/fragment/GoogleMapFragment.java index 4792f201c..1936f0420 100644 --- a/twidere/src/google/java/org/mariotaku/twidere/fragment/GoogleMapFragment.java +++ b/twidere/src/google/java/org/mariotaku/twidere/fragment/GoogleMapFragment.java @@ -31,6 +31,7 @@ import android.view.View; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; @@ -53,11 +54,16 @@ public class GoogleMapFragment extends SupportMapFragment implements Constants, if (args == null || !args.containsKey(EXTRA_LATITUDE) || !args.containsKey(EXTRA_LONGITUDE)) return; final double lat = args.getDouble(EXTRA_LATITUDE, 0.0), lng = args.getDouble(EXTRA_LONGITUDE, 0.0); - mMapView = getMap(); - final MarkerOptions marker = new MarkerOptions(); - marker.position(new LatLng(lat, lng)); - mMapView.addMarker(marker); - center(false); + getMapAsync(new OnMapReadyCallback() { + @Override + public void onMapReady(GoogleMap googleMap) { + mMapView = googleMap; + final MarkerOptions marker = new MarkerOptions(); + marker.position(new LatLng(lat, lng)); + mMapView.addMarker(marker); + center(false); + } + }); } @Override diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java index ee7588fd1..903118f5a 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java @@ -540,7 +540,7 @@ public class ComposeActivity extends BaseActivity implements OnMenuItemClickList mAttachedMediaPreview = (RecyclerView) findViewById(R.id.attached_media_preview); mMenuBar = (ActionMenuView) findViewById(R.id.menu_bar); mSendView = findViewById(R.id.send); - mSendTextCountView = (StatusTextCountView) mSendView.findViewById(R.id.status_text_count); + mSendTextCountView = (StatusTextCountView) findViewById(R.id.status_text_count); mLocationSwitch = (MultiValueSwitch) findViewById(R.id.location_switch); mAccountSelector = (RecyclerView) findViewById(R.id.account_selector); mAccountSelectorContainer = findViewById(R.id.account_selector_container); diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/SignInActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/SignInActivity.java index 67a3486eb..cf8750321 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/SignInActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/SignInActivity.java @@ -27,7 +27,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.ColorStateList; -import android.content.res.Resources; import android.graphics.Color; import android.net.Uri; import android.os.AsyncTask; @@ -39,6 +38,7 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.support.v7.app.AlertDialog; import android.text.Editable; @@ -87,6 +87,7 @@ import org.mariotaku.twidere.model.util.ParcelableUserUtils; import org.mariotaku.twidere.model.util.UserKeyUtils; import org.mariotaku.twidere.provider.TwidereDataStore.Accounts; import org.mariotaku.twidere.util.AsyncTaskUtils; +import org.mariotaku.twidere.util.DataStoreUtils; import org.mariotaku.twidere.util.JsonSerializer; import org.mariotaku.twidere.util.OAuthPasswordAuthenticator; import org.mariotaku.twidere.util.OAuthPasswordAuthenticator.AuthenticationException; @@ -104,13 +105,6 @@ import org.mariotaku.twidere.util.view.ConsumerKeySecretValidator; import java.lang.ref.WeakReference; -import static android.text.TextUtils.isEmpty; -import static org.mariotaku.twidere.util.DataStoreUtils.getActivatedAccountKeys; -import static org.mariotaku.twidere.util.Utils.getNonEmptyString; -import static org.mariotaku.twidere.util.Utils.isUserLoggedIn; -import static org.mariotaku.twidere.util.Utils.showErrorMessage; -import static org.mariotaku.twidere.util.Utils.trim; - public class SignInActivity extends BaseActivity implements OnClickListener, TextWatcher { public static final String FRAGMENT_TAG_SIGN_IN_PROGRESS = "sign_in_progress"; @@ -218,7 +212,7 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: { - final UserKey[] accountKeys = getActivatedAccountKeys(this); + final UserKey[] accountKeys = DataStoreUtils.getActivatedAccountKeys(this); if (accountKeys.length > 0) { onBackPressed(); } @@ -303,8 +297,8 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex mAPIUrlFormat = savedInstanceState.getString(Accounts.API_URL_FORMAT); mAuthType = savedInstanceState.getInt(Accounts.AUTH_TYPE); mSameOAuthSigningUrl = savedInstanceState.getBoolean(Accounts.SAME_OAUTH_SIGNING_URL); - mConsumerKey = trim(savedInstanceState.getString(Accounts.CONSUMER_KEY)); - mConsumerSecret = trim(savedInstanceState.getString(Accounts.CONSUMER_SECRET)); + mConsumerKey = Utils.trim(savedInstanceState.getString(Accounts.CONSUMER_KEY)); + mConsumerSecret = Utils.trim(savedInstanceState.getString(Accounts.CONSUMER_SECRET)); mUsername = savedInstanceState.getString(Accounts.SCREEN_NAME); mPassword = savedInstanceState.getString(Accounts.PASSWORD); mAPIChangeTimestamp = savedInstanceState.getLong(EXTRA_API_LAST_CHANGE); @@ -321,8 +315,8 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex mSignUpButton.setOnClickListener(this); - final Resources resources = getResources(); - final ColorStateList color = ColorStateList.valueOf(resources.getColor(R.color.material_light_green)); + final ColorStateList color = ColorStateList.valueOf(ContextCompat.getColor(this, + R.color.material_light_green)); ViewCompat.setBackgroundTintList(mSignInButton, color); setSignInButton(); @@ -378,13 +372,13 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex private void setDefaultAPI() { final long apiLastChange = mPreferences.getLong(KEY_API_LAST_CHANGE, mAPIChangeTimestamp); final boolean defaultApiChanged = apiLastChange != mAPIChangeTimestamp; - final String apiUrlFormat = getNonEmptyString(mPreferences, KEY_API_URL_FORMAT, DEFAULT_TWITTER_API_URL_FORMAT); + final String apiUrlFormat = Utils.getNonEmptyString(mPreferences, KEY_API_URL_FORMAT, DEFAULT_TWITTER_API_URL_FORMAT); final int authType = mPreferences.getInt(KEY_AUTH_TYPE, ParcelableCredentials.AUTH_TYPE_OAUTH); final boolean sameOAuthSigningUrl = mPreferences.getBoolean(KEY_SAME_OAUTH_SIGNING_URL, false); final boolean noVersionSuffix = mPreferences.getBoolean(KEY_NO_VERSION_SUFFIX, false); - final String consumerKey = getNonEmptyString(mPreferences, KEY_CONSUMER_KEY, TWITTER_CONSUMER_KEY); - final String consumerSecret = getNonEmptyString(mPreferences, KEY_CONSUMER_SECRET, TWITTER_CONSUMER_SECRET); - if (isEmpty(mAPIUrlFormat) || defaultApiChanged) { + final String consumerKey = Utils.getNonEmptyString(mPreferences, KEY_CONSUMER_KEY, TWITTER_CONSUMER_KEY); + final String consumerSecret = Utils.getNonEmptyString(mPreferences, KEY_CONSUMER_SECRET, TWITTER_CONSUMER_SECRET); + if (TextUtils.isEmpty(mAPIUrlFormat) || defaultApiChanged) { mAPIUrlFormat = apiUrlFormat; } if (defaultApiChanged) { @@ -396,10 +390,10 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex if (defaultApiChanged) { mNoVersionSuffix = noVersionSuffix; } - if (isEmpty(mConsumerKey) || defaultApiChanged) { + if (TextUtils.isEmpty(mConsumerKey) || defaultApiChanged) { mConsumerKey = consumerKey; } - if (isEmpty(mConsumerSecret) || defaultApiChanged) { + if (TextUtils.isEmpty(mConsumerSecret) || defaultApiChanged) { mConsumerSecret = consumerSecret; } if (defaultApiChanged) { @@ -448,9 +442,9 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex } else if (result.exception instanceof LoginVerificationException) { Toast.makeText(this, R.string.login_verification_failed, Toast.LENGTH_SHORT).show(); } else if (result.exception instanceof AuthenticationException) { - showErrorMessage(this, getString(R.string.action_signing_in), result.exception.getCause(), true); + Utils.showErrorMessage(this, getString(R.string.action_signing_in), result.exception.getCause(), true); } else { - showErrorMessage(this, getString(R.string.action_signing_in), result.exception, true); + Utils.showErrorMessage(this, getString(R.string.action_signing_in), result.exception, true); } } } @@ -610,7 +604,7 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex Twitter.class); final User user = twitter.verifyCredentials(); final int color = analyseUserProfileColor(user); - return new SignInResponse(isUserLoggedIn(context, user.getId()), auth, user, + return new SignInResponse(Utils.isUserLoggedIn(context, user.getId()), auth, user, ParcelableCredentials.AUTH_TYPE_OAUTH, color, apiUrlFormat, sameOauthSigningUrl, noVersionSuffix, detectAccountType(twitter, user)); } catch (final TwitterException e) { @@ -735,7 +729,7 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex final String userId = user.getId(); if (userId == null) return new SignInResponse(false, false, null); final int color = analyseUserProfileColor(user); - return new SignInResponse(isUserLoggedIn(activity, userId), username, password, user, + return new SignInResponse(Utils.isUserLoggedIn(activity, userId), username, password, user, color, apiUrlFormat, noVersionSuffix, detectAccountType(twitter, user)); } @@ -751,7 +745,7 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex final String userId = user.getId(); if (userId == null) return new SignInResponse(false, false, null); final int color = analyseUserProfileColor(user); - return new SignInResponse(isUserLoggedIn(activity, userId), user, color, apiUrlFormat, + return new SignInResponse(Utils.isUserLoggedIn(activity, userId), user, color, apiUrlFormat, noVersionSuffix, detectAccountType(twitter, user)); } @@ -762,7 +756,7 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex final Twitter twitter = TwitterAPIFactory.getInstance(activity, endpoint, auth, Twitter.class); final User user = twitter.verifyCredentials(); final int color = analyseUserProfileColor(user); - return new SignInResponse(isUserLoggedIn(activity, userId), auth, user, authType, color, + return new SignInResponse(Utils.isUserLoggedIn(activity, userId), auth, user, authType, color, apiUrlFormat, sameOAuthSigningUrl, noVersionSuffix, detectAccountType(twitter, user)); } @@ -874,6 +868,7 @@ public class SignInActivity extends BaseActivity implements OnClickListener, Tex case DialogInterface.BUTTON_POSITIVE: { final AlertDialog alertDialog = (AlertDialog) dialog; final EditText editVerification = (EditText) alertDialog.findViewById(R.id.edit_verification_code); + assert editVerification != null; callback.setChallengeResponse(ParseUtils.parseString(editVerification.getText())); break; } diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/UserListSelectorActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/UserListSelectorActivity.java index 9fefee942..081a29ec8 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/UserListSelectorActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/UserListSelectorActivity.java @@ -25,6 +25,7 @@ import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; @@ -298,19 +299,19 @@ public class UserListSelectorActivity extends BaseActivity implements OnClickLis try { final ResponseList lists = twitter.getUserLists(mScreenName, true); final List data = new ArrayList<>(); - boolean is_my_account = mScreenName.equalsIgnoreCase(getAccountScreenName(mActivity, + boolean isMyAccount = mScreenName.equalsIgnoreCase(getAccountScreenName(mActivity, mAccountKey)); for (final UserList item : lists) { final User user = item.getUser(); if (user != null && mScreenName.equalsIgnoreCase(user.getScreenName())) { - if (!is_my_account && user.getId() == mAccountKey.getId()) { - is_my_account = true; + if (!isMyAccount && TextUtils.equals(user.getId(), mAccountKey.getId())) { + isMyAccount = true; } data.add(ParcelableUserListUtils.from(item, mAccountKey)); } } final SingleResponse> result = SingleResponse.getInstance(data); - result.getExtras().putBoolean(EXTRA_IS_MY_ACCOUNT, is_my_account); + result.getExtras().putBoolean(EXTRA_IS_MY_ACCOUNT, isMyAccount); return result; } catch (final TwitterException e) { Log.w(LOGTAG, e); diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/SourceAutoCompleteAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/SourceAutoCompleteAdapter.java index 6b0daf8c4..5760b31e2 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/SourceAutoCompleteAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/SourceAutoCompleteAdapter.java @@ -33,55 +33,55 @@ import org.mariotaku.twidere.util.HtmlEscapeHelper; public class SourceAutoCompleteAdapter extends SimpleCursorAdapter implements Constants { - private static final String[] COLUMNS = new String[] { CachedStatuses._ID, CachedStatuses.SOURCE }; - private static final String[] FROM = new String[0]; - private static final int[] TO = new int[0]; + private static final String[] COLUMNS = new String[]{CachedStatuses._ID, CachedStatuses.SOURCE}; + private static final String[] FROM = new String[0]; + private static final int[] TO = new int[0]; - private final SQLiteDatabase mDatabase; + private final SQLiteDatabase mDatabase; - private int mSourceIdx; + private int mSourceIdx; - public SourceAutoCompleteAdapter(final Context context) { - super(context, android.R.layout.simple_list_item_1, null, FROM, TO, 0); - final TwidereApplication app = TwidereApplication.getInstance(context); - mDatabase = app != null ? app.getSQLiteDatabase() : null; - } + public SourceAutoCompleteAdapter(final Context context) { + super(context, android.R.layout.simple_list_item_1, null, FROM, TO, 0); + final TwidereApplication app = TwidereApplication.getInstance(context); + mDatabase = app.getSQLiteDatabase(); + } - @Override - public void bindView(final View view, final Context context, final Cursor cursor) { - if (isCursorClosed()) return; - final TextView text1 = (TextView) view.findViewById(android.R.id.text1); - text1.setText(convertToString(cursor)); - super.bindView(view, context, cursor); - } + @Override + public void bindView(final View view, final Context context, final Cursor cursor) { + if (isCursorClosed()) return; + final TextView text1 = (TextView) view.findViewById(android.R.id.text1); + text1.setText(convertToString(cursor)); + super.bindView(view, context, cursor); + } - @Override - public CharSequence convertToString(final Cursor cursor) { - if (isCursorClosed() || mSourceIdx == -1) return null; - return HtmlEscapeHelper.toPlainText(cursor.getString(mSourceIdx)); - } + @Override + public CharSequence convertToString(final Cursor cursor) { + if (isCursorClosed() || mSourceIdx == -1) return null; + return HtmlEscapeHelper.toPlainText(cursor.getString(mSourceIdx)); + } - public boolean isCursorClosed() { - final Cursor cursor = getCursor(); - return cursor == null || cursor.isClosed(); - } + public boolean isCursorClosed() { + final Cursor cursor = getCursor(); + return cursor == null || cursor.isClosed(); + } - @Override - public Cursor runQueryOnBackgroundThread(final CharSequence constraint) { - final String constraint_escaped = constraint != null ? constraint.toString().replaceAll("_", "^_") : null; - final String selection = constraint != null ? CachedStatuses.SOURCE + " LIKE '%\">'||?||'%' ESCAPE '^'" - : null; - final String[] selectionArgs = constraint != null ? new String[] { constraint_escaped } : null; - return mDatabase.query(true, CachedStatuses.TABLE_NAME, COLUMNS, selection, selectionArgs, - CachedStatuses.SOURCE, null, null, null); - } + @Override + public Cursor runQueryOnBackgroundThread(final CharSequence constraint) { + final String constraint_escaped = constraint != null ? constraint.toString().replaceAll("_", "^_") : null; + final String selection = constraint != null ? CachedStatuses.SOURCE + " LIKE '%\">'||?||'%' ESCAPE '^'" + : null; + final String[] selectionArgs = constraint != null ? new String[]{constraint_escaped} : null; + return mDatabase.query(true, CachedStatuses.TABLE_NAME, COLUMNS, selection, selectionArgs, + CachedStatuses.SOURCE, null, null, null); + } - @Override - public Cursor swapCursor(final Cursor cursor) { - if (cursor != null) { - mSourceIdx = cursor.getColumnIndex(CachedStatuses.SOURCE); - } - return super.swapCursor(cursor); - } + @Override + public Cursor swapCursor(final Cursor cursor) { + if (cursor != null) { + mSourceIdx = cursor.getColumnIndex(CachedStatuses.SOURCE); + } + return super.swapCursor(cursor); + } } diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/BaseFiltersFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/BaseFiltersFragment.java index 1be04f3aa..b6d321d98 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/BaseFiltersFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/BaseFiltersFragment.java @@ -295,6 +295,7 @@ public abstract class BaseFiltersFragment extends AbsContentListViewFragment + + + + diff --git a/twidere/src/main/res/xml/preferences_cards.xml b/twidere/src/main/res/xml/preferences_cards.xml index 64055aa76..f71c7a97e 100644 --- a/twidere/src/main/res/xml/preferences_cards.xml +++ b/twidere/src/main/res/xml/preferences_cards.xml @@ -1,4 +1,5 @@ + - + + android:value="@xml/preferences_usage_statistics"/> + android:title="@string/import_export_settings"/> + android:value="@xml/preferences_scrapyard"/> . --> + + . --> + diff --git a/twidere/src/main/res/xml/preferences_usage_statistics.xml b/twidere/src/main/res/xml/preferences_usage_statistics.xml index 66f0afc7b..fd93b0100 100644 --- a/twidere/src/main/res/xml/preferences_usage_statistics.xml +++ b/twidere/src/main/res/xml/preferences_usage_statistics.xml @@ -17,6 +17,7 @@ ~ along with this program. If not, see . --> + . --> +