Remove unnecessary pre-19 code branches.

Now that our minSdk is 19, we can remove a lot of old code paths that
only ran pre-19.
This commit is contained in:
Greyson Parrelli 2019-03-20 15:09:27 -07:00
parent a52c295a38
commit 8caaf057e8
42 changed files with 125 additions and 387 deletions

View File

@ -52,9 +52,7 @@ public abstract class BaseActionBarActivity extends AppCompatActivity {
} }
private void initializeScreenshotSecurity() { private void initializeScreenshotSecurity() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && if (TextSecurePreferences.isScreenSecurityEnabled(this)) {
TextSecurePreferences.isScreenSecurityEnabled(this))
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else { } else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);

View File

@ -135,8 +135,7 @@ public class ContactSelectionListFragment extends Fragment
showContactsProgress = view.findViewById(R.id.progress); showContactsProgress = view.findViewById(R.id.progress);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
swipeRefresh.setEnabled(getActivity().getIntent().getBooleanExtra(REFRESHABLE, true) && swipeRefresh.setEnabled(getActivity().getIntent().getBooleanExtra(REFRESHABLE, true));
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN);
return view; return view;
} }

View File

@ -71,18 +71,15 @@ import org.thoughtcrime.securesms.components.reminder.ServiceOutageReminder;
import org.thoughtcrime.securesms.components.reminder.ShareReminder; import org.thoughtcrime.securesms.components.reminder.ShareReminder;
import org.thoughtcrime.securesms.components.reminder.SystemSmsImportReminder; import org.thoughtcrime.securesms.components.reminder.SystemSmsImportReminder;
import org.thoughtcrime.securesms.components.reminder.UnauthorizedReminder; import org.thoughtcrime.securesms.components.reminder.UnauthorizedReminder;
import org.thoughtcrime.securesms.components.reminder.UnsupportedAndroidVersionReminder;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo; import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
import org.thoughtcrime.securesms.database.loaders.ConversationListLoader; import org.thoughtcrime.securesms.database.loaders.ConversationListLoader;
import org.thoughtcrime.securesms.events.ReminderUpdateEvent; import org.thoughtcrime.securesms.events.ReminderUpdateEvent;
import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob; import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.notifications.MarkReadReceiver; import org.thoughtcrime.securesms.notifications.MarkReadReceiver;
import org.thoughtcrime.securesms.notifications.MessageNotifier; import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask; import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
@ -202,8 +199,6 @@ public class ConversationListFragment extends Fragment
final Context context = params[0]; final Context context = params[0];
if (UnauthorizedReminder.isEligible(context)) { if (UnauthorizedReminder.isEligible(context)) {
return Optional.of(new UnauthorizedReminder(context)); return Optional.of(new UnauthorizedReminder(context));
} else if (UnsupportedAndroidVersionReminder.isEligible()) {
return Optional.of(new UnsupportedAndroidVersionReminder(context));
} else if (ExpiredBuildReminder.isEligible()) { } else if (ExpiredBuildReminder.isEligible()) {
return Optional.of(new ExpiredBuildReminder(context)); return Optional.of(new ExpiredBuildReminder(context));
} else if (ServiceOutageReminder.isEligible(context)) { } else if (ServiceOutageReminder.isEligible(context)) {

View File

@ -262,13 +262,13 @@ public class PassphrasePromptActivity extends PassphraseActivity {
assert keyguardManager != null; assert keyguardManager != null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && !keyguardManager.isKeyguardSecure()) { if (!keyguardManager.isKeyguardSecure()) {
Log.w(TAG ,"Keyguard not secure..."); Log.w(TAG ,"Keyguard not secure...");
handleAuthenticated(); handleAuthenticated();
return; return;
} }
if (Build.VERSION.SDK_INT >= 16 && fingerprintManager.isHardwareDetected() && fingerprintManager.hasEnrolledFingerprints()) { if (fingerprintManager.isHardwareDetected() && fingerprintManager.hasEnrolledFingerprints()) {
Log.i(TAG, "Listening for fingerprints..."); Log.i(TAG, "Listening for fingerprints...");
fingerprintCancellationSignal = new CancellationSignal(); fingerprintCancellationSignal = new CancellationSignal();
fingerprintManager.authenticate(null, 0, fingerprintCancellationSignal, fingerprintListener, null); fingerprintManager.authenticate(null, 0, fingerprintCancellationSignal, fingerprintListener, null);
@ -283,7 +283,7 @@ public class PassphrasePromptActivity extends PassphraseActivity {
} }
private void pauseScreenLock() { private void pauseScreenLock() {
if (Build.VERSION.SDK_INT >= 16 && fingerprintCancellationSignal != null) { if (fingerprintCancellationSignal != null) {
fingerprintCancellationSignal.cancel(); fingerprintCancellationSignal.cancel();
} }
} }

View File

@ -483,30 +483,26 @@ public class VerifyIdentityActivity extends PassphraseRequiredActionBarActivity
} }
private void setCodeSegment(final TextView codeView, String segment) { private void setCodeSegment(final TextView codeView, String segment) {
if (Build.VERSION.SDK_INT >= 11) { ValueAnimator valueAnimator = new ValueAnimator();
ValueAnimator valueAnimator = new ValueAnimator(); valueAnimator.setObjectValues(0, Integer.parseInt(segment));
valueAnimator.setObjectValues(0, Integer.parseInt(segment));
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
@Override @Override
public void onAnimationUpdate(ValueAnimator animation) { public void onAnimationUpdate(ValueAnimator animation) {
int value = (int) animation.getAnimatedValue(); int value = (int) animation.getAnimatedValue();
codeView.setText(String.format("%05d", value)); codeView.setText(String.format("%05d", value));
} }
}); });
valueAnimator.setEvaluator(new TypeEvaluator<Integer>() { valueAnimator.setEvaluator(new TypeEvaluator<Integer>() {
public Integer evaluate(float fraction, Integer startValue, Integer endValue) { public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
return Math.round(startValue + (endValue - startValue) * fraction); return Math.round(startValue + (endValue - startValue) * fraction);
} }
}); });
valueAnimator.setDuration(1000); valueAnimator.setDuration(1000);
valueAnimator.start(); valueAnimator.start();
} else {
codeView.setText(segment);
}
} }
private String[] getSegments(Fingerprint fingerprint, int segmentCount) { private String[] getSegments(Fingerprint fingerprint, int segmentCount) {

View File

@ -121,9 +121,7 @@ public class WebRtcCallActivity extends Activity {
} }
private void initializeScreenshotSecurity() { private void initializeScreenshotSecurity() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && if (TextSecurePreferences.isScreenSecurityEnabled(this)) {
TextSecurePreferences.isScreenSecurityEnabled(this))
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else { } else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);

View File

@ -87,10 +87,6 @@ public class AttachmentTypeSelector extends PopupWindow {
this.closeButton.setOnClickListener(new CloseClickListener()); this.closeButton.setOnClickListener(new CloseClickListener());
this.recentRail.setListener(new RecentPhotoSelectedListener()); this.recentRail.setListener(new RecentPhotoSelectedListener());
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
ViewUtil.findById(layout, R.id.location_linear_layout).setVisibility(View.INVISIBLE);
}
setContentView(layout); setContentView(layout);
setWidth(LinearLayout.LayoutParams.MATCH_PARENT); setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
setHeight(LinearLayout.LayoutParams.WRAP_CONTENT); setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);

View File

@ -218,10 +218,7 @@ public class AudioView extends FrameLayout implements AudioSlidePlayer.Listener
this.timestamp.setTextColor(foregroundTint); this.timestamp.setTextColor(foregroundTint);
this.seekBar.getProgressDrawable().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN); this.seekBar.getProgressDrawable().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
this.seekBar.getThumb().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
this.seekBar.getThumb().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
}
} }
private double getProgress() { private double getProgress() {

View File

@ -73,15 +73,9 @@ public class ConversationItemThumbnail extends FrameLayout {
@SuppressWarnings("SuspiciousNameCombination") @SuppressWarnings("SuspiciousNameCombination")
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
super.dispatchDraw(canvas); super.dispatchDraw(canvas);
if (!cornerMask.isLegacy()) { cornerMask.mask(canvas);
cornerMask.mask(canvas);
}
if (album.getVisibility() != VISIBLE) { if (album.getVisibility() != VISIBLE) {
outliner.draw(canvas); outliner.draw(canvas);

View File

@ -20,11 +20,7 @@ public class CornerMask {
private final RectF bounds = new RectF(); private final RectF bounds = new RectF();
public CornerMask(@NonNull View view) { public CornerMask(@NonNull View view) {
if (isLegacy()) { view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
} else {
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
clearPaint.setColor(Color.BLACK); clearPaint.setColor(Color.BLACK);
clearPaint.setStyle(Paint.Style.FILL); clearPaint.setStyle(Paint.Style.FILL);
@ -42,21 +38,12 @@ public class CornerMask {
corners.addRoundRect(bounds, radii, Path.Direction.CW); corners.addRoundRect(bounds, radii, Path.Direction.CW);
// Note: There's a bug in the P beta where most PorterDuff modes aren't working. But CLEAR does. // Note: There's a bug in the P beta where most PorterDuff modes aren't working. But CLEAR does.
// So we find and inverse path and use Mode.CLEAR for versions that support Path.op(). // So we find and inverse path and use Mode.CLEAR.
// See issue https://issuetracker.google.com/issues/111394085. // See issue https://issuetracker.google.com/issues/111394085.
if (!isLegacy()) { outline.reset();
outline.reset(); outline.addRect(bounds, Path.Direction.CW);
outline.addRect(bounds, Path.Direction.CW); outline.op(corners, Path.Op.DIFFERENCE);
outline.op(corners, Path.Op.DIFFERENCE); canvas.drawPath(outline, clearPaint);
canvas.drawPath(outline, clearPaint);
} else {
corners.addRoundRect(bounds, radii, Path.Direction.CW);
canvas.clipPath(corners);
}
}
public boolean isLegacy() {
return Build.VERSION.SDK_INT < 19;
} }
public void setRadius(int radius) { public void setRadius(int radius) {

View File

@ -61,10 +61,7 @@ public class HourglassView extends View {
this.progressPaint.setColor(getResources().getColor(R.color.black)); this.progressPaint.setColor(getResources().getColor(R.color.black));
this.progressPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); this.progressPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
if (android.os.Build.VERSION.SDK_INT >= 11) setLayerType(View.LAYER_TYPE_SOFTWARE, null);
{
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
} }
@Override @Override

View File

@ -98,11 +98,6 @@ public class InputPanel extends LinearLayout
this.microphoneRecorderView = findViewById(R.id.recorder_view); this.microphoneRecorderView = findViewById(R.id.recorder_view);
this.microphoneRecorderView.setListener(this); this.microphoneRecorderView.setListener(this);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
this.microphoneRecorderView.setVisibility(View.GONE);
this.microphoneRecorderView.setClickable(false);
}
if (TextSecurePreferences.isSystemEmojiPreferred(getContext())) { if (TextSecurePreferences.isSystemEmojiPreferred(getContext())) {
emojiToggle.setVisibility(View.GONE); emojiToggle.setVisibility(View.GONE);
emojiVisible = false; emojiVisible = false;

View File

@ -88,25 +88,12 @@ public class LinkPreviewView extends FrameLayout {
setWillNotDraw(false); setWillNotDraw(false);
} }
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (type == TYPE_COMPOSE) return;
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
}
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas); super.dispatchDraw(canvas);
if (type == TYPE_COMPOSE) return; if (type == TYPE_COMPOSE) return;
if (!cornerMask.isLegacy()) { cornerMask.mask(canvas);
cornerMask.mask(canvas);
}
outliner.draw(canvas); outliner.draw(canvas);
} }

View File

@ -65,23 +65,11 @@ public class OutlinedThumbnailView extends ThumbnailView {
setWillNotDraw(false); setWillNotDraw(false);
} }
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
}
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas); super.dispatchDraw(canvas);
if (!cornerMask.isLegacy()) { cornerMask.mask(canvas);
cornerMask.mask(canvas);
}
outliner.draw(canvas); outliner.draw(canvas);
} }

View File

@ -86,9 +86,7 @@ public class PushRecipientsPanel extends RelativeLayout implements RecipientModi
inflater.inflate(R.layout.push_recipients_panel, this, true); inflater.inflate(R.layout.push_recipients_panel, this, true);
View imageButton = findViewById(R.id.contacts_button); View imageButton = findViewById(R.id.contacts_button);
((MarginLayoutParams) imageButton.getLayoutParams()).topMargin = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
((MarginLayoutParams) imageButton.getLayoutParams()).topMargin = 0;
panel = findViewById(R.id.recipients_panel); panel = findViewById(R.id.recipients_panel);
initRecipientsEditor(); initRecipientsEditor();

View File

@ -129,26 +129,12 @@ public class QuoteView extends FrameLayout implements RecipientModifiedListener
} }
dismissView.setOnClickListener(view -> setVisibility(GONE)); dismissView.setOnClickListener(view -> setVisibility(GONE));
if (cornerMask.isLegacy()) {
setWillNotDraw(false);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
} }
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas); super.dispatchDraw(canvas);
if (!cornerMask.isLegacy()) { cornerMask.mask(canvas);
cornerMask.mask(canvas);
}
} }
public void setQuote(GlideRequests glideRequests, public void setQuote(GlideRequests glideRequests,

View File

@ -111,8 +111,8 @@ public class RecentPhotoViewRail extends FrameLayout implements LoaderManager.Lo
String bucketId = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.BUCKET_ID)); String bucketId = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.BUCKET_ID));
int orientation = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.ORIENTATION)); int orientation = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.ORIENTATION));
long size = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.SIZE)); long size = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.SIZE));
int width = Build.VERSION.SDK_INT >= 16 ? cursor.getInt(cursor.getColumnIndexOrThrow(getWidthColumn(orientation))) : 0; int width = cursor.getInt(cursor.getColumnIndexOrThrow(getWidthColumn(orientation)));
int height = Build.VERSION.SDK_INT >= 16 ? cursor.getInt(cursor.getColumnIndexOrThrow(getHeightColumn(orientation))) : 0; int height = cursor.getInt(cursor.getColumnIndexOrThrow(getHeightColumn(orientation)));
final Uri uri = Uri.withAppendedPath(baseUri, Long.toString(id)); final Uri uri = Uri.withAppendedPath(baseUri, Long.toString(id));

View File

@ -101,26 +101,12 @@ public class SharedContactView extends LinearLayout implements RecipientModified
footer.setIconColor(iconColor); footer.setIconColor(iconColor);
footer.setAlpha(footerAlpha); footer.setAlpha(footerAlpha);
} }
if (cornerMask.isLegacy()) {
setWillNotDraw(false);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
} }
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas); super.dispatchDraw(canvas);
if (!cornerMask.isLegacy()) { cornerMask.mask(canvas);
cornerMask.mask(canvas);
}
} }
public void setContact(@NonNull Contact contact, @NonNull GlideRequests glideRequests, @NonNull Locale locale) { public void setContact(@NonNull Contact contact, @NonNull GlideRequests glideRequests, @NonNull Locale locale) {

View File

@ -1,23 +0,0 @@
package org.thoughtcrime.securesms.components.reminder;
import android.content.Context;
import android.os.Build;
import android.support.annotation.NonNull;
import org.thoughtcrime.securesms.R;
public class UnsupportedAndroidVersionReminder extends Reminder {
public UnsupportedAndroidVersionReminder(@NonNull Context context) {
super(null, context.getString(R.string.reminder_header_the_latest_signal_features_wont_work));
}
@Override
public boolean isDismissable() {
return false;
}
public static boolean isEligible() {
return Build.VERSION.SDK_INT < 19;
}
}

View File

@ -186,7 +186,7 @@ public class WebRtcCallControls extends LinearLayout {
} }
public void displayVideoTooltip(ViewGroup viewGroup) { public void displayVideoTooltip(ViewGroup viewGroup) {
if (Build.VERSION.SDK_INT > 15 && videoMuteButton.getVisibility() == VISIBLE) { if (videoMuteButton.getVisibility() == VISIBLE) {
final ToolTipsManager toolTipsManager = new ToolTipsManager(); final ToolTipsManager toolTipsManager = new ToolTipsManager();
ToolTip toolTip = new ToolTip.Builder(getContext(), videoMuteButton, viewGroup, ToolTip toolTip = new ToolTip.Builder(getContext(), videoMuteButton, viewGroup,

View File

@ -110,29 +110,24 @@ public class ContactNameEditViewModel extends ViewModel {
Character.UnicodeBlock block = Character.UnicodeBlock.of(codepoint); Character.UnicodeBlock block = Character.UnicodeBlock.of(codepoint);
boolean isCJKV = Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS.equals(block) || return Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS.equals(block) ||
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A.equals(block) || Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A.equals(block) ||
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B.equals(block) || Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY.equals(block) || Character.UnicodeBlock.CJK_COMPATIBILITY.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY_FORMS.equals(block) || Character.UnicodeBlock.CJK_COMPATIBILITY_FORMS.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS.equals(block) || Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT.equals(block) || Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT.equals(block) ||
Character.UnicodeBlock.CJK_RADICALS_SUPPLEMENT.equals(block) || Character.UnicodeBlock.CJK_RADICALS_SUPPLEMENT.equals(block) ||
Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION.equals(block) || Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION.equals(block) ||
Character.UnicodeBlock.ENCLOSED_CJK_LETTERS_AND_MONTHS.equals(block) || Character.UnicodeBlock.ENCLOSED_CJK_LETTERS_AND_MONTHS.equals(block) ||
Character.UnicodeBlock.KANGXI_RADICALS.equals(block) || Character.UnicodeBlock.KANGXI_RADICALS.equals(block) ||
Character.UnicodeBlock.IDEOGRAPHIC_DESCRIPTION_CHARACTERS.equals(block) || Character.UnicodeBlock.IDEOGRAPHIC_DESCRIPTION_CHARACTERS.equals(block) ||
Character.UnicodeBlock.HIRAGANA.equals(block) || Character.UnicodeBlock.HIRAGANA.equals(block) ||
Character.UnicodeBlock.KATAKANA.equals(block) || Character.UnicodeBlock.KATAKANA.equals(block) ||
Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS.equals(block) || Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS.equals(block) ||
Character.UnicodeBlock.HANGUL_JAMO.equals(block) || Character.UnicodeBlock.HANGUL_JAMO.equals(block) ||
Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO.equals(block) || Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO.equals(block) ||
Character.UnicodeBlock.HANGUL_SYLLABLES.equals(block); Character.UnicodeBlock.HANGUL_SYLLABLES.equals(block) ||
Character.isIdeographic(codepoint);
if (Build.VERSION.SDK_INT >= 19) {
isCJKV |= Character.isIdeographic(codepoint);
}
return isCJKV;
} }
} }

View File

@ -1570,12 +1570,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
distributionType = getIntent().getIntExtra(DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT); distributionType = getIntent().getIntExtra(DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT);
glideRequests = GlideApp.with(this); glideRequests = GlideApp.with(this);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
LinearLayout conversationContainer = ViewUtil.findById(this, R.id.conversation_container);
conversationContainer.setClipChildren(true);
conversationContainer.setClipToPadding(true);
}
recipient.addListener(this); recipient.addListener(this);
} }

View File

@ -5,7 +5,6 @@ import android.Manifest;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.v4.content.CursorLoader; import android.support.v4.content.CursorLoader;
@ -16,16 +15,6 @@ public class RecentPhotosLoader extends CursorLoader {
public static Uri BASE_URL = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; public static Uri BASE_URL = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
private static final String[] PROJECTION = new String[] { private static final String[] PROJECTION = new String[] {
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns.DATE_MODIFIED,
MediaStore.Images.ImageColumns.ORIENTATION,
MediaStore.Images.ImageColumns.MIME_TYPE,
MediaStore.Images.ImageColumns.BUCKET_ID,
MediaStore.Images.ImageColumns.SIZE
};
private static final String[] PROJECTION_16 = new String[] {
MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns.DATE_MODIFIED, MediaStore.Images.ImageColumns.DATE_MODIFIED,
@ -46,11 +35,9 @@ public class RecentPhotosLoader extends CursorLoader {
@Override @Override
public Cursor loadInBackground() { public Cursor loadInBackground() {
String[] projection = Build.VERSION.SDK_INT >= 16 ? PROJECTION_16 : PROJECTION;
if (Permissions.hasAll(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { if (Permissions.hasAll(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
return context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, return context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, null, null, PROJECTION, null, null,
MediaStore.Images.ImageColumns.DATE_MODIFIED + " DESC"); MediaStore.Images.ImageColumns.DATE_MODIFIED + " DESC");
} else { } else {
return null; return null;

View File

@ -252,24 +252,22 @@ public class MultiDeviceContactUpdateJob extends ContextJob implements Injectabl
return Optional.absent(); return Optional.absent();
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { Uri displayPhotoUri = Uri.withAppendedPath(uri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
Uri displayPhotoUri = Uri.withAppendedPath(uri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
try { try {
AssetFileDescriptor fd = context.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r"); AssetFileDescriptor fd = context.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r");
if (fd == null) { if (fd == null) {
return Optional.absent(); return Optional.absent();
}
return Optional.of(SignalServiceAttachment.newStreamBuilder()
.withStream(fd.createInputStream())
.withContentType("image/*")
.withLength(fd.getLength())
.build());
} catch (IOException e) {
Log.i(TAG, "Could not find avatar for URI: " + displayPhotoUri);
} }
return Optional.of(SignalServiceAttachment.newStreamBuilder()
.withStream(fd.createInputStream())
.withContentType("image/*")
.withLength(fd.getLength())
.build());
} catch (IOException e) {
Log.i(TAG, "Could not find avatar for URI: " + displayPhotoUri);
} }
Uri photoUri = Uri.withAppendedPath(uri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); Uri photoUri = Uri.withAppendedPath(uri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

View File

@ -160,10 +160,7 @@ public class UpdateApkJob extends ContextJob {
downloadRequest.setDescription("Downloading Signal " + versionName); downloadRequest.setDescription("Downloading Signal " + versionName);
downloadRequest.setVisibleInDownloadsUi(false); downloadRequest.setVisibleInDownloadsUi(false);
downloadRequest.setDestinationInExternalFilesDir(context, null, "signal-update.apk"); downloadRequest.setDestinationInExternalFilesDir(context, null, "signal-update.apk");
downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
if (Build.VERSION.SDK_INT >= 11) {
downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
}
long downloadId = downloadManager.enqueue(downloadRequest); long downloadId = downloadManager.enqueue(downloadRequest);
TextSecurePreferences.setUpdateApkDownloadId(context, downloadId); TextSecurePreferences.setUpdateApkDownloadId(context, downloadId);

View File

@ -168,11 +168,9 @@ class MediaRepository {
String[] projection; String[] projection;
if (hasOrienation) { if (hasOrienation) {
projection = Build.VERSION.SDK_INT >= 16 ? new String[]{Images.Media._ID, Images.Media.MIME_TYPE, Images.Media.DATE_TAKEN, Images.Media.ORIENTATION, Images.Media.WIDTH, Images.Media.HEIGHT, Images.Media.SIZE} projection = new String[]{Images.Media._ID, Images.Media.MIME_TYPE, Images.Media.DATE_TAKEN, Images.Media.ORIENTATION, Images.Media.WIDTH, Images.Media.HEIGHT, Images.Media.SIZE};
: new String[]{Images.Media._ID, Images.Media.MIME_TYPE, Images.Media.DATE_TAKEN, Images.Media.ORIENTATION, Images.Media.SIZE};
} else { } else {
projection = Build.VERSION.SDK_INT >= 16 ? new String[]{Images.Media._ID, Images.Media.MIME_TYPE, Images.Media.DATE_TAKEN, Images.Media.WIDTH, Images.Media.HEIGHT, Images.Media.SIZE} projection = new String[]{Images.Media._ID, Images.Media.MIME_TYPE, Images.Media.DATE_TAKEN, Images.Media.WIDTH, Images.Media.HEIGHT, Images.Media.SIZE};
: new String[]{Images.Media._ID, Images.Media.MIME_TYPE, Images.Media.DATE_TAKEN, Images.Media.SIZE};
} }
if (Media.ALL_MEDIA_BUCKET_ID.equals(bucketId)) { if (Media.ALL_MEDIA_BUCKET_ID.equals(bucketId)) {
@ -186,15 +184,10 @@ class MediaRepository {
String mimetype = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.MIME_TYPE)); String mimetype = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.MIME_TYPE));
long dateTaken = cursor.getLong(cursor.getColumnIndexOrThrow(Images.Media.DATE_TAKEN)); long dateTaken = cursor.getLong(cursor.getColumnIndexOrThrow(Images.Media.DATE_TAKEN));
int orientation = hasOrienation ? cursor.getInt(cursor.getColumnIndexOrThrow(Images.Media.ORIENTATION)) : 0; int orientation = hasOrienation ? cursor.getInt(cursor.getColumnIndexOrThrow(Images.Media.ORIENTATION)) : 0;
int width = 0; int width = cursor.getInt(cursor.getColumnIndexOrThrow(getWidthColumn(orientation)));
int height = 0; int height = cursor.getInt(cursor.getColumnIndexOrThrow(getHeightColumn(orientation)));
long size = cursor.getLong(cursor.getColumnIndexOrThrow(Images.Media.SIZE)); long size = cursor.getLong(cursor.getColumnIndexOrThrow(Images.Media.SIZE));
if (Build.VERSION.SDK_INT >= 16) {
width = cursor.getInt(cursor.getColumnIndexOrThrow(getWidthColumn(orientation)));
height = cursor.getInt(cursor.getColumnIndexOrThrow(getHeightColumn(orientation)));
}
media.add(new Media(uri, mimetype, dateTaken, width, height, size, Optional.of(bucketId), Optional.absent())); media.add(new Media(uri, mimetype, dateTaken, width, height, size, Optional.of(bucketId), Optional.absent()));
} }
} }

View File

@ -468,18 +468,16 @@ public class AttachmentManager {
final Intent intent = new Intent(); final Intent intent = new Intent();
intent.setType(type); intent.setType(type);
if (extraMimeType != null && Build.VERSION.SDK_INT >= 19) { if (extraMimeType != null) {
intent.putExtra(Intent.EXTRA_MIME_TYPES, extraMimeType); intent.putExtra(Intent.EXTRA_MIME_TYPES, extraMimeType);
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.setAction(Intent.ACTION_OPEN_DOCUMENT); try {
try { activity.startActivityForResult(intent, requestCode);
activity.startActivityForResult(intent, requestCode); return;
return; } catch (ActivityNotFoundException anfe) {
} catch (ActivityNotFoundException anfe) { Log.w(TAG, "couldn't complete ACTION_OPEN_DOCUMENT, no activity found. falling back.");
Log.w(TAG, "couldn't complete ACTION_OPEN_DOCUMENT, no activity found. falling back.");
}
} }
intent.setAction(Intent.ACTION_GET_CONTENT); intent.setAction(Intent.ACTION_GET_CONTENT);

View File

@ -220,7 +220,7 @@ public class SingleRecipientNotificationBuilder extends AbstractNotificationBuil
} }
private boolean hasBigPictureSlide(@Nullable SlideDeck slideDeck) { private boolean hasBigPictureSlide(@Nullable SlideDeck slideDeck) {
if (slideDeck == null || Build.VERSION.SDK_INT < 16) { if (slideDeck == null) {
return false; return false;
} }

View File

@ -117,7 +117,7 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment
findPreference(TextSecurePreferences.PASSPHRASE_TIMEOUT_PREF).setVisible(false); findPreference(TextSecurePreferences.PASSPHRASE_TIMEOUT_PREF).setVisible(false);
KeyguardManager keyguardManager = (KeyguardManager)getContext().getSystemService(Context.KEYGUARD_SERVICE); KeyguardManager keyguardManager = (KeyguardManager)getContext().getSystemService(Context.KEYGUARD_SERVICE);
if (Build.VERSION.SDK_INT < 16 || !keyguardManager.isKeyguardSecure()) { if (!keyguardManager.isKeyguardSecure()) {
((SwitchPreferenceCompat)findPreference(TextSecurePreferences.SCREEN_LOCK)).setChecked(false); ((SwitchPreferenceCompat)findPreference(TextSecurePreferences.SCREEN_LOCK)).setChecked(false);
findPreference(TextSecurePreferences.SCREEN_LOCK).setEnabled(false); findPreference(TextSecurePreferences.SCREEN_LOCK).setEnabled(false);
} }

View File

@ -112,14 +112,8 @@ public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment {
boolean postKitkatSMS = Util.isDefaultSmsProvider(context); boolean postKitkatSMS = Util.isDefaultSmsProvider(context);
boolean preKitkatSMS = TextSecurePreferences.isInterceptAllSmsEnabled(context); boolean preKitkatSMS = TextSecurePreferences.isInterceptAllSmsEnabled(context);
boolean preKitkatMMS = TextSecurePreferences.isInterceptAllMmsEnabled(context); boolean preKitkatMMS = TextSecurePreferences.isInterceptAllMmsEnabled(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (postKitkatSMS) return onCaps; if (postKitkatSMS) return onCaps;
else return offCaps; else return offCaps;
} else {
if (preKitkatSMS && preKitkatMMS) return onCaps;
else if (preKitkatSMS && !preKitkatMMS) return context.getString(smsMmsSummaryResId, on, off);
else if (!preKitkatSMS && preKitkatMMS) return context.getString(smsMmsSummaryResId, off, on);
else return offCaps;
}
} }
} }

View File

@ -32,23 +32,21 @@ public class SystemProfileUtil {
new AsyncTask<Void, Void, byte[]>() { new AsyncTask<Void, Void, byte[]>() {
@Override @Override
protected @Nullable byte[] doInBackground(Void... params) { protected @Nullable byte[] doInBackground(Void... params) {
if (Build.VERSION.SDK_INT >= 14) { try (Cursor cursor = context.getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null)) {
try (Cursor cursor = context.getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null)) { while (cursor != null && cursor.moveToNext()) {
while (cursor != null && cursor.moveToNext()) { String photoUri = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Profile.PHOTO_URI));
String photoUri = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Profile.PHOTO_URI));
if (!TextUtils.isEmpty(photoUri)) { if (!TextUtils.isEmpty(photoUri)) {
try { try {
BitmapUtil.ScaleResult result = BitmapUtil.createScaledBytes(context, Uri.parse(photoUri), mediaConstraints); BitmapUtil.ScaleResult result = BitmapUtil.createScaledBytes(context, Uri.parse(photoUri), mediaConstraints);
return result.getBitmap(); return result.getBitmap();
} catch (BitmapDecodingException e) { } catch (BitmapDecodingException e) {
Log.w(TAG, e); Log.w(TAG, e);
}
} }
} }
} catch (SecurityException se) {
Log.w(TAG, se);
} }
} catch (SecurityException se) {
Log.w(TAG, se);
} }
return null; return null;
@ -73,14 +71,12 @@ public class SystemProfileUtil {
protected String doInBackground(Void... params) { protected String doInBackground(Void... params) {
String name = null; String name = null;
if (Build.VERSION.SDK_INT >= 14) { try (Cursor cursor = context.getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null)) {
try (Cursor cursor = context.getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null)) { if (cursor != null && cursor.moveToNext()) {
if (cursor != null && cursor.moveToNext()) { name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Profile.DISPLAY_NAME));
name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Profile.DISPLAY_NAME));
}
} catch (SecurityException se) {
Log.w(TAG, se);
} }
} catch (SecurityException se) {
Log.w(TAG, se);
} }
if (name == null) { if (name == null) {

View File

@ -38,10 +38,8 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragment).commit(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragment).commit();
} }
if (Build.VERSION.SDK_INT >= 19) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN |
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
} }
@Override @Override

View File

@ -250,8 +250,12 @@ public class KeyCachingService extends Service {
} }
} }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void foregroundService() {
private void foregroundServiceModern() { if (TextSecurePreferences.isPasswordDisabled(this) && !TextSecurePreferences.isScreenLockEnabled(this)) {
stopForeground(true);
return;
}
Log.i(TAG, "foregrounding KCS"); Log.i(TAG, "foregrounding KCS");
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NotificationChannels.LOCKED_STATUS); NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NotificationChannels.LOCKED_STATUS);
@ -268,48 +272,6 @@ public class KeyCachingService extends Service {
startForeground(SERVICE_RUNNING_ID, builder.build()); startForeground(SERVICE_RUNNING_ID, builder.build());
} }
private void foregroundServiceICS() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NotificationChannels.LOCKED_STATUS);
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.key_caching_notification);
remoteViews.setOnClickPendingIntent(R.id.lock_cache_icon, buildLockIntent());
builder.setSmallIcon(R.drawable.icon_cached);
builder.setContent(remoteViews);
builder.setContentIntent(buildLaunchIntent());
stopForeground(true);
startForeground(SERVICE_RUNNING_ID, builder.build());
}
private void foregroundServiceLegacy() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NotificationChannels.LOCKED_STATUS);
builder.setSmallIcon(R.drawable.icon_cached);
builder.setWhen(System.currentTimeMillis());
builder.setContentTitle(getString(R.string.KeyCachingService_passphrase_cached));
builder.setContentText(getString(R.string.KeyCachingService_signal_passphrase_cached));
builder.setContentIntent(buildLaunchIntent());
stopForeground(true);
startForeground(SERVICE_RUNNING_ID, builder.build());
}
private void foregroundService() {
if (TextSecurePreferences.isPasswordDisabled(this) && !TextSecurePreferences.isScreenLockEnabled(this)) {
stopForeground(true);
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
foregroundServiceModern();
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
foregroundServiceICS();
} else {
foregroundServiceLegacy();
}
}
private void broadcastNewSecret() { private void broadcastNewSecret() {
Log.i(TAG, "Broadcasting new secret..."); Log.i(TAG, "Broadcasting new secret...");

View File

@ -37,19 +37,10 @@ public class MmsListener extends BroadcastReceiver {
return false; return false;
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && if (Telephony.Sms.Intents.WAP_PUSH_RECEIVED_ACTION.equals(intent.getAction()) && Util.isDefaultSmsProvider(context)) {
Telephony.Sms.Intents.WAP_PUSH_RECEIVED_ACTION.equals(intent.getAction()) &&
Util.isDefaultSmsProvider(context))
{
return false; return false;
} }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT &&
TextSecurePreferences.isInterceptAllMmsEnabled(context))
{
return true;
}
return false; return false;
} }

View File

@ -89,19 +89,10 @@ public class SmsListener extends BroadcastReceiver {
if (!ApplicationMigrationService.isDatabaseImported(context)) if (!ApplicationMigrationService.isDatabaseImported(context))
return false; return false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && if (SMS_RECEIVED_ACTION.equals(intent.getAction()) && Util.isDefaultSmsProvider(context)) {
SMS_RECEIVED_ACTION.equals(intent.getAction()) &&
Util.isDefaultSmsProvider(context))
{
return false; return false;
} }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT &&
TextSecurePreferences.isInterceptAllSmsEnabled(context))
{
return true;
}
return false; return false;
} }

View File

@ -141,10 +141,6 @@ public class DateUtils extends android.text.format.DateUtils {
} }
private static String getLocalizedPattern(String template, Locale locale) { private static String getLocalizedPattern(String template, Locale locale) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { return DateFormat.getBestDateTimePattern(locale, template);
return DateFormat.getBestDateTimePattern(locale, template);
} else {
return new SimpleDateFormat(template, locale).toLocalizedPattern();
}
} }
} }

View File

@ -23,11 +23,7 @@ public class MemoryFileUtil {
int fd = field.getInt(fileDescriptor); int fd = field.getInt(fileDescriptor);
if (Build.VERSION.SDK_INT >= 13) { return ParcelFileDescriptor.adoptFd(fd);
return ParcelFileDescriptor.adoptFd(fd);
} else {
return ParcelFileDescriptor.dup(fileDescriptor);
}
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
throw new IOException(e); throw new IOException(e);
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {

View File

@ -530,11 +530,7 @@ public class TextSecurePreferences {
} }
public static boolean isSmsEnabled(Context context) { public static boolean isSmsEnabled(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { return Util.isDefaultSmsProvider(context);
return Util.isDefaultSmsProvider(context);
} else {
return isInterceptAllSmsEnabled(context);
}
} }
public static int getLocalRegistrationId(Context context) { public static int getLocalRegistrationId(Context context) {

View File

@ -367,8 +367,7 @@ public class Util {
@SuppressLint("NewApi") @SuppressLint("NewApi")
public static boolean isDefaultSmsProvider(Context context){ public static boolean isDefaultSmsProvider(Context context){
return (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) || return context.getPackageName().equals(Telephony.Sms.getDefaultSmsPackage(context));
(context.getPackageName().equals(Telephony.Sms.getDefaultSmsPackage(context)));
} }
public static int getCurrentApkReleaseVersion(Context context) { public static int getCurrentApkReleaseVersion(Context context) {
@ -395,12 +394,8 @@ public class Util {
} }
public static int getDaysTillBuildExpiry() { public static int getDaysTillBuildExpiry() {
if (Build.VERSION.SDK_INT < 19) { int age = (int) TimeUnit.MILLISECONDS.toDays(System.currentTimeMillis() - BuildConfig.BUILD_TIMESTAMP);
return Integer.MAX_VALUE; return 90 - age;
} else {
int age = (int) TimeUnit.MILLISECONDS.toDays(System.currentTimeMillis() - BuildConfig.BUILD_TIMESTAMP);
return 90 - age;
}
} }
@TargetApi(VERSION_CODES.LOLLIPOP) @TargetApi(VERSION_CODES.LOLLIPOP)

View File

@ -129,11 +129,7 @@ public class BluetoothStateManager {
} }
private String getScoChangeIntent() { private String getScoChangeIntent() {
if (Build.VERSION.SDK_INT >= 14) { return AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED;
return AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED;
} else {
return AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED;
}
} }

View File

@ -79,11 +79,7 @@ public class IncomingRinger {
return true; return true;
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { return shouldVibrateNew(context, ringerMode, vibrate);
return shouldVibrateNew(context, ringerMode, vibrate);
} else {
return shouldVibrateOld(context, vibrate);
}
} }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @TargetApi(Build.VERSION_CODES.HONEYCOMB)

View File

@ -37,12 +37,7 @@ public class SignalAudioManager {
public void initializeAudioForCall() { public void initializeAudioForCall() {
AudioManager audioManager = ServiceUtil.getAudioManager(context); AudioManager audioManager = ServiceUtil.getAudioManager(context);
audioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
audioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE);
} else {
audioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}
} }
public void startIncomingRinger(@Nullable Uri ringtoneUri, boolean vibrate) { public void startIncomingRinger(@Nullable Uri ringtoneUri, boolean vibrate) {