Enable screenshot detection
This commit is contained in:
parent
15ac6cdb38
commit
08a49ea2ea
@ -25,7 +25,7 @@ dependencies {
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 21
|
compileSdkVersion 21
|
||||||
buildToolsVersion '21.0.0'
|
buildToolsVersion '21.0.1'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
debug {
|
debug {
|
||||||
|
@ -18,6 +18,8 @@ import android.content.IntentFilter;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.graphics.Point;
|
||||||
import android.media.AudioFormat;
|
import android.media.AudioFormat;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.AudioRecord;
|
import android.media.AudioRecord;
|
||||||
@ -36,7 +38,10 @@ import android.os.Environment;
|
|||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.os.Vibrator;
|
import android.os.Vibrator;
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
|
import android.view.Display;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.WindowManager;
|
||||||
|
|
||||||
import org.telegram.android.video.InputSurface;
|
import org.telegram.android.video.InputSurface;
|
||||||
import org.telegram.android.video.MP4Builder;
|
import org.telegram.android.video.MP4Builder;
|
||||||
@ -58,6 +63,7 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.channels.FileChannel;
|
import java.nio.channels.FileChannel;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -340,13 +346,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private String[] mediaProjections = new String[] {
|
private String[] mediaProjections = null;
|
||||||
MediaStore.Images.ImageColumns.DATA,
|
|
||||||
MediaStore.Images.ImageColumns.DISPLAY_NAME,
|
|
||||||
MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
|
|
||||||
MediaStore.Images.ImageColumns.DATE_TAKEN,
|
|
||||||
MediaStore.Images.ImageColumns.TITLE
|
|
||||||
};
|
|
||||||
|
|
||||||
private static volatile MediaController Instance = null;
|
private static volatile MediaController Instance = null;
|
||||||
public static MediaController getInstance() {
|
public static MediaController getInstance() {
|
||||||
@ -413,6 +413,26 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
if (UserConfig.isClientActivated()) {
|
if (UserConfig.isClientActivated()) {
|
||||||
checkAutodownloadSettings();
|
checkAutodownloadSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= 16) {
|
||||||
|
mediaProjections = new String[] {
|
||||||
|
MediaStore.Images.ImageColumns.DATA,
|
||||||
|
MediaStore.Images.ImageColumns.DISPLAY_NAME,
|
||||||
|
MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
|
||||||
|
MediaStore.Images.ImageColumns.DATE_TAKEN,
|
||||||
|
MediaStore.Images.ImageColumns.TITLE,
|
||||||
|
MediaStore.Images.ImageColumns.WIDTH,
|
||||||
|
MediaStore.Images.ImageColumns.HEIGHT
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
mediaProjections = new String[] {
|
||||||
|
MediaStore.Images.ImageColumns.DATA,
|
||||||
|
MediaStore.Images.ImageColumns.DISPLAY_NAME,
|
||||||
|
MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
|
||||||
|
MediaStore.Images.ImageColumns.DATE_TAKEN,
|
||||||
|
MediaStore.Images.ImageColumns.TITLE
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startProgressTimer() {
|
private void startProgressTimer() {
|
||||||
@ -684,7 +704,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startMediaObserver() {
|
public void startMediaObserver() {
|
||||||
if (android.os.Build.VERSION.SDK_INT > 0) { //disable while it's not perferct
|
if (android.os.Build.VERSION.SDK_INT < 14) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ApplicationLoader.applicationHandler.removeCallbacks(stopMediaObserverRunnable);
|
ApplicationLoader.applicationHandler.removeCallbacks(stopMediaObserverRunnable);
|
||||||
@ -706,7 +726,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stopMediaObserver() {
|
public void stopMediaObserver() {
|
||||||
if (android.os.Build.VERSION.SDK_INT > 0) { //disable while it's not perferct
|
if (android.os.Build.VERSION.SDK_INT < 14) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (stopMediaObserverRunnable == null) {
|
if (stopMediaObserverRunnable == null) {
|
||||||
@ -718,6 +738,30 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
|
|
||||||
public void processMediaObserver(Uri uri) {
|
public void processMediaObserver(Uri uri) {
|
||||||
try {
|
try {
|
||||||
|
int width = 0;
|
||||||
|
int height = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
WindowManager windowManager = (WindowManager) ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE);
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||||
|
Point size = new Point();
|
||||||
|
windowManager.getDefaultDisplay().getRealSize(size);
|
||||||
|
width = size.x;
|
||||||
|
height = size.y;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
Method mGetRawW = Display.class.getMethod("getRawWidth");
|
||||||
|
Method mGetRawH = Display.class.getMethod("getRawHeight");
|
||||||
|
width = (Integer) mGetRawW.invoke(windowManager.getDefaultDisplay());
|
||||||
|
height = (Integer) mGetRawH.invoke(windowManager.getDefaultDisplay());
|
||||||
|
} catch (Exception e) {
|
||||||
|
FileLog.e("tmessages", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
FileLog.e("tmessages", e);
|
||||||
|
}
|
||||||
|
|
||||||
Cursor cursor = ApplicationLoader.applicationContext.getContentResolver().query(uri, mediaProjections, null, null, "date_added DESC LIMIT 1");
|
Cursor cursor = ApplicationLoader.applicationContext.getContentResolver().query(uri, mediaProjections, null, null, "date_added DESC LIMIT 1");
|
||||||
final ArrayList<Long> screenshotDates = new ArrayList<Long>();
|
final ArrayList<Long> screenshotDates = new ArrayList<Long>();
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
@ -726,75 +770,33 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
String data = cursor.getString(0);
|
String data = cursor.getString(0);
|
||||||
String display_name = cursor.getString(1);
|
String display_name = cursor.getString(1);
|
||||||
String album_name = cursor.getString(2);
|
String album_name = cursor.getString(2);
|
||||||
String title = cursor.getString(4);
|
|
||||||
long date = cursor.getLong(3);
|
long date = cursor.getLong(3);
|
||||||
|
String title = cursor.getString(4);
|
||||||
|
int photoW = 0;
|
||||||
|
int photoH = 0;
|
||||||
|
if (Build.VERSION.SDK_INT >= 16) {
|
||||||
|
photoW = cursor.getInt(5);
|
||||||
|
photoH = cursor.getInt(6);
|
||||||
|
}
|
||||||
if (data != null && data.toLowerCase().contains("screenshot") ||
|
if (data != null && data.toLowerCase().contains("screenshot") ||
|
||||||
display_name != null && display_name.toLowerCase().contains("screenshot") ||
|
display_name != null && display_name.toLowerCase().contains("screenshot") ||
|
||||||
album_name != null && album_name.toLowerCase().contains("screenshot") ||
|
album_name != null && album_name.toLowerCase().contains("screenshot") ||
|
||||||
title != null && title.toLowerCase().contains("screenshot")) {
|
title != null && title.toLowerCase().contains("screenshot")) {
|
||||||
/*BitmapRegionDecoder bitmapRegionDecoder = null;
|
|
||||||
boolean added = false;
|
|
||||||
try {
|
try {
|
||||||
int waitCount = 0;
|
if (photoW == 0 || photoH == 0) {
|
||||||
while (waitCount < 5 && bitmapRegionDecoder == null) {
|
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
|
||||||
try {
|
bmOptions.inJustDecodeBounds = true;
|
||||||
bitmapRegionDecoder = BitmapRegionDecoder.newInstance(data, true);
|
BitmapFactory.decodeFile(data, bmOptions);
|
||||||
if (bitmapRegionDecoder != null) {
|
photoW = bmOptions.outWidth;
|
||||||
break;
|
photoH = bmOptions.outHeight;
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
FileLog.e("tmessages", e);
|
|
||||||
}
|
|
||||||
Thread.sleep(1000);
|
|
||||||
}
|
}
|
||||||
if (bitmapRegionDecoder != null) {
|
if (photoW == 0 || photoH == 0 || (photoW == width && photoH == height || photoH == width && photoW == height)) {
|
||||||
Bitmap bitmap = bitmapRegionDecoder.decodeRegion(new Rect(0, 0, AndroidUtilities.dp(44), AndroidUtilities.dp(44)), null);
|
|
||||||
int w = bitmap.getWidth();
|
|
||||||
int h = bitmap.getHeight();
|
|
||||||
for (int y = 0; y < h; y++) {
|
|
||||||
int rowCount = 0;
|
|
||||||
for (int x = 0; x < w; x++) {
|
|
||||||
int px = bitmap.getPixel(x, y);
|
|
||||||
if (px == 0xffffffff) {
|
|
||||||
rowCount++;
|
|
||||||
} else {
|
|
||||||
rowCount = 0;
|
|
||||||
}
|
|
||||||
if (rowCount > 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (rowCount > 8) {
|
|
||||||
screenshotDates.add(date);
|
|
||||||
added = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bitmapRegionDecoder.recycle();
|
|
||||||
try {
|
|
||||||
if (bitmap != null) {
|
|
||||||
bitmap.recycle();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
FileLog.e("tmessages", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
FileLog.e("tmessages", e);
|
|
||||||
try {
|
|
||||||
if (bitmapRegionDecoder != null) {
|
|
||||||
bitmapRegionDecoder.recycle();
|
|
||||||
}
|
|
||||||
} catch (Exception e2) {
|
|
||||||
FileLog.e("tmessages", e2);
|
|
||||||
}
|
|
||||||
if (!added) {
|
|
||||||
screenshotDates.add(date);
|
screenshotDates.add(date);
|
||||||
}
|
}
|
||||||
}*/
|
} catch (Exception e) {
|
||||||
screenshotDates.add(date);
|
screenshotDates.add(date);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
FileLog.e("tmessages", "screenshot!");
|
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
}
|
}
|
||||||
@ -1205,7 +1207,6 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
|
|||||||
|
|
||||||
audioTrackPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, playerBufferSize, AudioTrack.MODE_STREAM);
|
audioTrackPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, playerBufferSize, AudioTrack.MODE_STREAM);
|
||||||
audioTrackPlayer.setStereoVolume(1.0f, 1.0f);
|
audioTrackPlayer.setStereoVolume(1.0f, 1.0f);
|
||||||
//audioTrackPlayer.setNotificationMarkerPosition((int)currentTotalPcmDuration);
|
|
||||||
audioTrackPlayer.setPlaybackPositionUpdateListener(new AudioTrack.OnPlaybackPositionUpdateListener() {
|
audioTrackPlayer.setPlaybackPositionUpdateListener(new AudioTrack.OnPlaybackPositionUpdateListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onMarkerReached(AudioTrack audioTrack) {
|
public void onMarkerReached(AudioTrack audioTrack) {
|
||||||
|
@ -2424,10 +2424,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
|||||||
chatActivityEnterView.setFieldFocused(false);
|
chatActivityEnterView.setFieldFocused(false);
|
||||||
MessagesController.getInstance().cancelTyping(dialog_id);
|
MessagesController.getInstance().cancelTyping(dialog_id);
|
||||||
|
|
||||||
/*if (currentEncryptedChat != null) { disabled
|
if (currentEncryptedChat != null) {
|
||||||
chatLeaveTime = System.currentTimeMillis();
|
chatLeaveTime = System.currentTimeMillis();
|
||||||
updateInformationForScreenshotDetector();
|
updateInformationForScreenshotDetector();
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateInformationForScreenshotDetector() {
|
private void updateInformationForScreenshotDetector() {
|
||||||
|
4
TMessagesProj/src/main/res/drawable-v21/bar_selector.xml
Normal file
4
TMessagesProj/src/main/res/drawable-v21/bar_selector.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="#ff45658d">
|
||||||
|
</ripple>
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="#fff0f0f0">
|
||||||
|
</ripple>
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="#ff3d3d3d">
|
||||||
|
</ripple>
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="#40a0bcdd">
|
||||||
|
</ripple>
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="#40ffffff">
|
||||||
|
</ripple>
|
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="#2f000000">
|
||||||
|
<item android:id="@android:id/mask" android:drawable="@android:color/white"/>
|
||||||
|
</ripple>
|
@ -15,7 +15,6 @@
|
|||||||
android:id="@+id/done_button"
|
android:id="@+id/done_button"
|
||||||
android:paddingRight="16dp"
|
android:paddingRight="16dp"
|
||||||
android:paddingLeft="16dp"
|
android:paddingLeft="16dp"
|
||||||
android:background="@drawable/bar_selector"
|
|
||||||
android:minHeight="60dp"/>
|
android:minHeight="60dp"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">الهاتف</string>
|
<string name="Phone">الهاتف</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">تم تعيين كافة الإشعارات افتراضيا</string>
|
<string name="ResetNotificationsText">تم تعيين كافة الإشعارات افتراضيا</string>
|
||||||
<string name="TextSize">حجم نص الرسائل</string>
|
<string name="TextSize">حجم نص الرسائل</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Telefon</string>
|
<string name="Phone">Telefon</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Alle Einstellungen für Mitteilungen zurücksetzen</string>
|
<string name="ResetNotificationsText">Alle Einstellungen für Mitteilungen zurücksetzen</string>
|
||||||
<string name="TextSize">Textgröße für Nachrichten</string>
|
<string name="TextSize">Textgröße für Nachrichten</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Teléfono</string>
|
<string name="Phone">Teléfono</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Restablecer las notificaciones</string>
|
<string name="ResetNotificationsText">Restablecer las notificaciones</string>
|
||||||
<string name="TextSize">Tamaño del texto</string>
|
<string name="TextSize">Tamaño del texto</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Telefono</string>
|
<string name="Phone">Telefono</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Ripristina tutte le impostazioni di notifica predefinite</string>
|
<string name="ResetNotificationsText">Ripristina tutte le impostazioni di notifica predefinite</string>
|
||||||
<string name="TextSize">Dimensione testo messaggi</string>
|
<string name="TextSize">Dimensione testo messaggi</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">전화번호</string>
|
<string name="Phone">전화번호</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">모든 알림 설정이 초기화되었습니다</string>
|
<string name="ResetNotificationsText">모든 알림 설정이 초기화되었습니다</string>
|
||||||
<string name="TextSize">채팅 글자 크기</string>
|
<string name="TextSize">채팅 글자 크기</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Telefoon</string>
|
<string name="Phone">Telefoon</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Alle meldingsinstellingen herstellen</string>
|
<string name="ResetNotificationsText">Alle meldingsinstellingen herstellen</string>
|
||||||
<string name="TextSize">Tekstgrootte berichten</string>
|
<string name="TextSize">Tekstgrootte berichten</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Telefone</string>
|
<string name="Phone">Telefone</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Restaurar todas as configurações de notificação</string>
|
<string name="ResetNotificationsText">Restaurar todas as configurações de notificação</string>
|
||||||
<string name="TextSize">Tamanho do texto nas mensagens</string>
|
<string name="TextSize">Tamanho do texto nas mensagens</string>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Telefone</string>
|
<string name="Phone">Telefone</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Restaurar todas as configurações de notificação</string>
|
<string name="ResetNotificationsText">Restaurar todas as configurações de notificação</string>
|
||||||
<string name="TextSize">Tamanho do texto nas mensagens</string>
|
<string name="TextSize">Tamanho do texto nas mensagens</string>
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
<item name="android:windowBackground">@android:color/white</item>
|
<item name="android:windowBackground">@android:color/white</item>
|
||||||
<item name="android:itemTextAppearance">@style/ActionBar.Transparent.TMessages.Item</item>
|
<item name="android:itemTextAppearance">@style/ActionBar.Transparent.TMessages.Item</item>
|
||||||
<item name="android:listViewStyle">@style/Theme.TMessages.ListView</item>
|
<item name="android:listViewStyle">@style/Theme.TMessages.ListView</item>
|
||||||
<!--<item name="android:listChoiceBackgroundIndicator">@drawable/list_selector</item>-->
|
<item name="android:listChoiceBackgroundIndicator">@drawable/list_selector</item>
|
||||||
<item name="android:editTextStyle">@style/Theme.TMessages.EditText</item>
|
<item name="android:editTextStyle">@style/Theme.TMessages.EditText</item>
|
||||||
<item name="android:actionBarItemBackground">@drawable/bar_selector_style</item>
|
<item name="android:actionBarItemBackground">@drawable/bar_selector_style</item>
|
||||||
</style>
|
</style>
|
||||||
|
@ -202,8 +202,12 @@
|
|||||||
<string name="Info">INFO</string>
|
<string name="Info">INFO</string>
|
||||||
<string name="Phone">Phone</string>
|
<string name="Phone">Phone</string>
|
||||||
<string name="Username">Username</string>
|
<string name="Username">Username</string>
|
||||||
<string name="UsernameInUse">Username already in use</string>
|
<string name="UsernamePlaceholder">Your Username</string>
|
||||||
<string name="UsernameInvalid">Username invalid</string>
|
<string name="UsernameInUse">Sorry, this username is already taken.</string>
|
||||||
|
<string name="UsernameInvalid">Sorry, this username is invalid.</string>
|
||||||
|
<string name="UsernameInvalidShort">A username must have at least 5 characters.</string>
|
||||||
|
<string name="UsernameInvalidStartNumber">Sorry, a username can't start with a number.</string>
|
||||||
|
<string name="Usernamehelp">You can choose a username on <![CDATA[<b>]]>Telegram<![CDATA[</b>]]>. If you do, other people will be able to find you by this username and contact you without knowing your phone number.\n\nYou can use <![CDATA[<b>]]>a–z<![CDATA[</b>]]>, <![CDATA[<b>]]>0–9<![CDATA[</b>]]> and underscores. Minimum length is <![CDATA[<b>]]>5<![CDATA[</b>]]> characters.</string>
|
||||||
<!--settings view-->
|
<!--settings view-->
|
||||||
<string name="ResetNotificationsText">Reset all notification settings to default</string>
|
<string name="ResetNotificationsText">Reset all notification settings to default</string>
|
||||||
<string name="TextSize">Messages Text Size</string>
|
<string name="TextSize">Messages Text Size</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user