Compare commits

...

8 Commits

Author SHA1 Message Date
akwizgran
6ae601e395 Bump version numbers for 1.5.7 release. 2023-09-12 17:30:19 +01:00
akwizgran
c5c1fdb61c Update translations. 2023-09-12 17:30:06 +01:00
Torsten Grote
cc9ebe9eda Merge branch 'catch-security-exception-for-bluetooth-address-setting' into 'master'
Catch SecurityException for bluetooth_address setting

See merge request briar/briar!1811
2023-09-12 16:24:05 +00:00
akwizgran
05b9dd699e Catch SecurityException for bluetooth_address setting. 2023-09-12 17:12:13 +01:00
Torsten Grote
09a9a00af6 Merge branch '2444-catch-exception-when-starting-chooser' into 'master'
Catch ActivityNotFoundException when starting chooser

Closes #2444

See merge request briar/briar!1810
2023-09-06 11:16:43 +00:00
Torsten Grote
67797d0378 Merge branch '2330-catch-npe-from-getbyinetaddress' into 'master'
Catch NPE from NetworkInterface.getByInetAddress()

Closes #2330

See merge request briar/briar!1809
2023-09-06 11:16:09 +00:00
akwizgran
4b11f3c0b3 Catch ActivityNotFoundException when starting chooser. 2023-08-24 15:58:33 +01:00
akwizgran
cc47c8522a Catch NPE from NetworkInterface.getByInetAddress(). 2023-08-24 15:53:00 +01:00
7 changed files with 41 additions and 12 deletions

View File

@@ -13,8 +13,8 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 33 targetSdkVersion 33
versionCode 10506 versionCode 10507
versionName "1.5.6" versionName "1.5.7"
consumerProguardFiles 'proguard-rules.txt' consumerProguardFiles 'proguard-rules.txt'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -201,6 +201,7 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
@Nullable @Nullable
private InetAddress getIpv6AddressForInterface(InetAddress ipv4) { private InetAddress getIpv6AddressForInterface(InetAddress ipv4) {
try { try {
// We may get an NPE from getByInetAddress() on Android 11
NetworkInterface iface = NetworkInterface.getByInetAddress(ipv4); NetworkInterface iface = NetworkInterface.getByInetAddress(ipv4);
if (iface == null) return null; if (iface == null) return null;
for (InetAddress addr : list(iface.getInetAddresses())) { for (InetAddress addr : list(iface.getInetAddresses())) {
@@ -208,7 +209,7 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
} }
// No suitable address // No suitable address
return null; return null;
} catch (SocketException e) { } catch (SocketException | NullPointerException e) {
logException(LOG, WARNING, e); logException(LOG, WARNING, e);
return null; return null;
} }

View File

@@ -64,11 +64,16 @@ public class AndroidUtils {
} }
// Return the address from settings if it's valid and not fake // Return the address from settings if it's valid and not fake
if (SDK_INT < 33) { if (SDK_INT < 33) {
try {
address = Settings.Secure.getString(ctx.getContentResolver(), address = Settings.Secure.getString(ctx.getContentResolver(),
"bluetooth_address"); "bluetooth_address");
if (isValidBluetoothAddress(address)) { if (isValidBluetoothAddress(address)) {
return new Pair<>(address, "settings"); return new Pair<>(address, "settings");
} }
} catch (SecurityException e) {
// Some custom ROMs throw this exception on SDK_INT < 33.
// Fall through
}
} }
// Try to get the address via reflection // Try to get the address via reflection
address = getBluetoothAddressByReflection(adapter); address = getBluetoothAddressByReflection(adapter);

View File

@@ -26,8 +26,8 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 33 targetSdkVersion 33
versionCode 10506 versionCode 10507
versionName "1.5.6" versionName "1.5.7"
applicationId "org.briarproject.briar.android" applicationId "org.briarproject.briar.android"
buildConfigField "String", "TorVersion", "\"$tor_version\"" buildConfigField "String", "TorVersion", "\"$tor_version\""

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.android.contact.add.remote; package org.briarproject.briar.android.contact.add.remote;
import android.content.ActivityNotFoundException;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.os.Bundle; import android.os.Bundle;
@@ -20,6 +21,7 @@ import org.briarproject.briar.android.view.InfoView;
import org.briarproject.nullsafety.MethodsNotNullByDefault; import org.briarproject.nullsafety.MethodsNotNullByDefault;
import org.briarproject.nullsafety.ParametersNotNullByDefault; import org.briarproject.nullsafety.ParametersNotNullByDefault;
import java.util.logging.Logger;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -29,8 +31,12 @@ import androidx.core.app.ShareCompat.IntentBuilder;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import static android.content.Context.CLIPBOARD_SERVICE; import static android.content.Context.CLIPBOARD_SERVICE;
import static android.widget.Toast.LENGTH_LONG;
import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.LENGTH_SHORT;
import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.api.contact.HandshakeLinkConstants.LINK_REGEX; import static org.briarproject.bramble.api.contact.HandshakeLinkConstants.LINK_REGEX;
import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen; import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen;
import static org.briarproject.briar.android.util.UiUtils.observeOnce; import static org.briarproject.briar.android.util.UiUtils.observeOnce;
@@ -39,6 +45,7 @@ import static org.briarproject.briar.android.util.UiUtils.observeOnce;
public class LinkExchangeFragment extends BaseFragment { public class LinkExchangeFragment extends BaseFragment {
private static final String TAG = LinkExchangeFragment.class.getName(); private static final String TAG = LinkExchangeFragment.class.getName();
private static final Logger LOG = getLogger(TAG);
@Inject @Inject
ViewModelProvider.Factory viewModelFactory; ViewModelProvider.Factory viewModelFactory;
@@ -116,11 +123,18 @@ public class LinkExchangeFragment extends BaseFragment {
copyButton.setEnabled(true); copyButton.setEnabled(true);
Button shareButton = v.findViewById(R.id.shareButton); Button shareButton = v.findViewById(R.id.shareButton);
shareButton.setOnClickListener(view -> shareButton.setOnClickListener(view -> {
try {
IntentBuilder.from(requireActivity()) IntentBuilder.from(requireActivity())
.setText(link) .setText(link)
.setType("text/plain") .setType("text/plain")
.startChooser()); .startChooser();
} catch (ActivityNotFoundException e) {
logException(LOG, WARNING, e);
Toast.makeText(requireContext(),
R.string.error_start_activity, LENGTH_LONG).show();
}
});
shareButton.setEnabled(true); shareButton.setEnabled(true);
InfoView infoText = v.findViewById(R.id.infoView); InfoView infoText = v.findViewById(R.id.infoView);

View File

@@ -152,6 +152,7 @@ Vänlige installera Briar på en nyare enhet.</string>
<string name="error_start_activity">Otillgänglig på ditt system</string> <string name="error_start_activity">Otillgänglig på ditt system</string>
<string name="status_heading">Status</string> <string name="status_heading">Status</string>
<string name="error">Fel</string> <string name="error">Fel</string>
<string name="info">Information</string>
<!--Contacts and Private Conversations--> <!--Contacts and Private Conversations-->
<string name="no_contacts">Inga kontakter</string> <string name="no_contacts">Inga kontakter</string>
<string name="no_contacts_action">Tryck på plus-ikonen (+) för att lägga till en kontakt</string> <string name="no_contacts_action">Tryck på plus-ikonen (+) för att lägga till en kontakt</string>
@@ -222,6 +223,7 @@ Vänlige installera Briar på en nyare enhet.</string>
<string name="menu_contact">Kontakt</string> <string name="menu_contact">Kontakt</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Lägg till en närvarande kontakt</string> <string name="add_contact_title">Lägg till en närvarande kontakt</string>
<string name="add_contact_error_two_way">Skannade ni båda varandras QR-koder?</string>
<string name="face_to_face">Du måste personligen träffa den som du vill lägga till som kontakt.\n\nDetta för att undvika att någon senare låtsas vara du eller läser dina meddelanden.</string> <string name="face_to_face">Du måste personligen träffa den som du vill lägga till som kontakt.\n\nDetta för att undvika att någon senare låtsas vara du eller läser dina meddelanden.</string>
<string name="continue_button">Fortsätt</string> <string name="continue_button">Fortsätt</string>
<string name="try_again_button">Försök igen</string> <string name="try_again_button">Försök igen</string>
@@ -229,9 +231,11 @@ Vänlige installera Briar på en nyare enhet.</string>
<string name="exchanging_contact_details">Utbyter detaljer om kontakten\u2026</string> <string name="exchanging_contact_details">Utbyter detaljer om kontakten\u2026</string>
<string name="contact_added_toast">Kontakt tillagd: %s</string> <string name="contact_added_toast">Kontakt tillagd: %s</string>
<string name="contact_already_exists">Kontakten %s finns redan</string> <string name="contact_already_exists">Kontakten %s finns redan</string>
<string name="contact_already_exists_general">Kontakten finns redan</string>
<string name="qr_code_invalid">QR-koden är felaktig</string> <string name="qr_code_invalid">QR-koden är felaktig</string>
<string name="qr_code_too_old_1">QR-koden som du har skannat kommer från en äldre version av Briar.\n\nVar vänlig och be din kontakt att uppgradera till den senaste versionen och försök sedan igen.</string> <string name="qr_code_too_old_1">QR-koden som du har skannat kommer från en äldre version av Briar.\n\nVar vänlig och be din kontakt att uppgradera till den senaste versionen och försök sedan igen.</string>
<string name="qr_code_too_new_1">QR-koden som du har skannat kommer från en äldre version av Briar.\n\nVänligen uppgradera till den senaste versionen och försök igen.</string> <string name="qr_code_too_new_1">QR-koden som du har skannat kommer från en äldre version av Briar.\n\nVänligen uppgradera till den senaste versionen och försök igen.</string>
<string name="mailbox_qr_code_for_contact">QR-koden du skannade kommer från Briar Mailbox.\n\nOm du vill länka en Mailbox, välj Inställningar &gt; Mailbox från Briar-menyn.</string>
<string name="camera_error">Kamerafel</string> <string name="camera_error">Kamerafel</string>
<string name="connecting_to_device">Ansluter till enhet\u2026</string> <string name="connecting_to_device">Ansluter till enhet\u2026</string>
<string name="authenticating_with_device">Autentiserar med enhet\u2026</string> <string name="authenticating_with_device">Autentiserar med enhet\u2026</string>

View File

@@ -676,6 +676,8 @@
<string name="disappearing_messages_summary">在7\u00A0天之后使此对话中的后续消息自动消失。</string> <string name="disappearing_messages_summary">在7\u00A0天之后使此对话中的后续消息自动消失。</string>
<!--Settings Actions--> <!--Settings Actions-->
<string name="pref_category_actions">操作</string> <string name="pref_category_actions">操作</string>
<string name="share_app_link">分享下载链接</string>
<string name="share_app_link_text">Briar 下载地址 %s</string>
<string name="send_feedback">提交反馈</string> <string name="send_feedback">提交反馈</string>
<!--Link Warning--> <!--Link Warning-->
<string name="link_warning_title">链接警告</string> <string name="link_warning_title">链接警告</string>
@@ -725,6 +727,7 @@
<string name="permission_camera_title">相机权限</string> <string name="permission_camera_title">相机权限</string>
<string name="permission_camera_request_body">Briar 需要获得相机权限以扫描二维码。</string> <string name="permission_camera_request_body">Briar 需要获得相机权限以扫描二维码。</string>
<string name="permission_location_title">位置权限</string> <string name="permission_location_title">位置权限</string>
<string name="permission_nearby_devices_title">“附近设备”权限</string>
<string name="permission_location_request_body">Briar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string> <string name="permission_location_request_body">Briar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string>
<string name="permission_camera_location_title">相机和位置</string> <string name="permission_camera_location_title">相机和位置</string>
<string name="permission_camera_location_request_body"> Briar 需要相机权限以扫描二维码。\n\nBriar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string> <string name="permission_camera_location_request_body"> Briar 需要相机权限以扫描二维码。\n\nBriar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string>
@@ -764,6 +767,8 @@
<string name="permission_hotspot_location_request_precise_body">要创建无线热点Briar 需要访问你的精确位置。\n\nBriar 不会储存你的位置也不会和任何人分享它。</string> <string name="permission_hotspot_location_request_precise_body">要创建无线热点Briar 需要访问你的精确位置。\n\nBriar 不会储存你的位置也不会和任何人分享它。</string>
<string name="permission_hotspot_location_denied_body">你拒绝了访问你的位置,但 Briar 需要这个权限才能创建 Wi-Fi 热点。\n\n请考虑授予访问权限。</string> <string name="permission_hotspot_location_denied_body">你拒绝了访问你的位置,但 Briar 需要这个权限才能创建 Wi-Fi 热点。\n\n请考虑授予访问权限。</string>
<string name="permission_hotspot_location_denied_precise_body">你拒绝了 Briar 访问你的精确位置,但 Briar 需要这个权限才能创建 无线热点。\n\n请考虑授予访问权限。</string> <string name="permission_hotspot_location_denied_precise_body">你拒绝了 Briar 访问你的精确位置,但 Briar 需要这个权限才能创建 无线热点。\n\n请考虑授予访问权限。</string>
<string name="permission_hotspot_nearby_wifi_request_body">要创建 Wi-FI 热点Briar 需要访问附近设备的权限。</string>
<string name="permission_hotspot_nearby_wifi_denied_body">你已拒绝对附近设备的访问,但 Briar 需要此权限在创建 Wi-FI 热点。\n\n请考虑授予权限。</string>
<string name="wifi_settings_title">Wi-Fi 设置</string> <string name="wifi_settings_title">Wi-Fi 设置</string>
<string name="wifi_settings_request_enable_body">要创建 Wi-Fi 热点Briar 需要使用 Wi-Fi。请允许它。</string> <string name="wifi_settings_request_enable_body">要创建 Wi-Fi 热点Briar 需要使用 Wi-Fi。请允许它。</string>
<string name="hotspot_tab_manual">手动</string> <string name="hotspot_tab_manual">手动</string>