mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 20:59:54 +01:00
Compare commits
2 Commits
beta-1.5.7
...
fix-databa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e617cab427 | ||
|
|
606739b93d |
@@ -13,8 +13,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionCode 10507
|
||||
versionName "1.5.7"
|
||||
versionCode 10506
|
||||
versionName "1.5.6"
|
||||
consumerProguardFiles 'proguard-rules.txt'
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -201,7 +201,6 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
|
||||
@Nullable
|
||||
private InetAddress getIpv6AddressForInterface(InetAddress ipv4) {
|
||||
try {
|
||||
// We may get an NPE from getByInetAddress() on Android 11
|
||||
NetworkInterface iface = NetworkInterface.getByInetAddress(ipv4);
|
||||
if (iface == null) return null;
|
||||
for (InetAddress addr : list(iface.getInetAddresses())) {
|
||||
@@ -209,7 +208,7 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
|
||||
}
|
||||
// No suitable address
|
||||
return null;
|
||||
} catch (SocketException | NullPointerException e) {
|
||||
} catch (SocketException e) {
|
||||
logException(LOG, WARNING, e);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -64,15 +64,10 @@ public class AndroidUtils {
|
||||
}
|
||||
// Return the address from settings if it's valid and not fake
|
||||
if (SDK_INT < 33) {
|
||||
try {
|
||||
address = Settings.Secure.getString(ctx.getContentResolver(),
|
||||
"bluetooth_address");
|
||||
if (isValidBluetoothAddress(address)) {
|
||||
return new Pair<>(address, "settings");
|
||||
}
|
||||
} catch (SecurityException e) {
|
||||
// Some custom ROMs throw this exception on SDK_INT < 33.
|
||||
// Fall through
|
||||
address = Settings.Secure.getString(ctx.getContentResolver(),
|
||||
"bluetooth_address");
|
||||
if (isValidBluetoothAddress(address)) {
|
||||
return new Pair<>(address, "settings");
|
||||
}
|
||||
}
|
||||
// Try to get the address via reflection
|
||||
|
||||
@@ -26,8 +26,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionCode 10507
|
||||
versionName "1.5.7"
|
||||
versionCode 10506
|
||||
versionName "1.5.6"
|
||||
applicationId "org.briarproject.briar.android"
|
||||
buildConfigField "String", "TorVersion", "\"$tor_version\""
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.briarproject.briar.android.contact.add.remote;
|
||||
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.os.Bundle;
|
||||
@@ -21,7 +20,6 @@ import org.briarproject.briar.android.view.InfoView;
|
||||
import org.briarproject.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.nullsafety.ParametersNotNullByDefault;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -31,12 +29,8 @@ import androidx.core.app.ShareCompat.IntentBuilder;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import static android.content.Context.CLIPBOARD_SERVICE;
|
||||
import static android.widget.Toast.LENGTH_LONG;
|
||||
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.util.LogUtils.logException;
|
||||
import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen;
|
||||
import static org.briarproject.briar.android.util.UiUtils.observeOnce;
|
||||
|
||||
@@ -45,7 +39,6 @@ import static org.briarproject.briar.android.util.UiUtils.observeOnce;
|
||||
public class LinkExchangeFragment extends BaseFragment {
|
||||
|
||||
private static final String TAG = LinkExchangeFragment.class.getName();
|
||||
private static final Logger LOG = getLogger(TAG);
|
||||
|
||||
@Inject
|
||||
ViewModelProvider.Factory viewModelFactory;
|
||||
@@ -123,18 +116,11 @@ public class LinkExchangeFragment extends BaseFragment {
|
||||
copyButton.setEnabled(true);
|
||||
|
||||
Button shareButton = v.findViewById(R.id.shareButton);
|
||||
shareButton.setOnClickListener(view -> {
|
||||
try {
|
||||
shareButton.setOnClickListener(view ->
|
||||
IntentBuilder.from(requireActivity())
|
||||
.setText(link)
|
||||
.setType("text/plain")
|
||||
.startChooser();
|
||||
} catch (ActivityNotFoundException e) {
|
||||
logException(LOG, WARNING, e);
|
||||
Toast.makeText(requireContext(),
|
||||
R.string.error_start_activity, LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
.startChooser());
|
||||
shareButton.setEnabled(true);
|
||||
|
||||
InfoView infoText = v.findViewById(R.id.infoView);
|
||||
|
||||
@@ -152,7 +152,6 @@ Vänlige installera Briar på en nyare enhet.</string>
|
||||
<string name="error_start_activity">Otillgänglig på ditt system</string>
|
||||
<string name="status_heading">Status</string>
|
||||
<string name="error">Fel</string>
|
||||
<string name="info">Information</string>
|
||||
<!--Contacts and Private Conversations-->
|
||||
<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>
|
||||
@@ -223,7 +222,6 @@ Vänlige installera Briar på en nyare enhet.</string>
|
||||
<string name="menu_contact">Kontakt</string>
|
||||
<!--Adding Contacts-->
|
||||
<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="continue_button">Fortsätt</string>
|
||||
<string name="try_again_button">Försök igen</string>
|
||||
@@ -231,11 +229,9 @@ Vänlige installera Briar på en nyare enhet.</string>
|
||||
<string name="exchanging_contact_details">Utbyter detaljer om kontakten\u2026</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_general">Kontakten finns redan</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_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 > Mailbox från Briar-menyn.</string>
|
||||
<string name="camera_error">Kamerafel</string>
|
||||
<string name="connecting_to_device">Ansluter till enhet\u2026</string>
|
||||
<string name="authenticating_with_device">Autentiserar med enhet\u2026</string>
|
||||
|
||||
@@ -474,7 +474,7 @@
|
||||
<string name="blogs_rss_feeds_import_progress">导入 RSS 订阅源中…</string>
|
||||
<string name="blogs_rss_feeds_import_error">抱歉!导入订阅源时发生错误。</string>
|
||||
<string name="blogs_rss_feeds_import_title">从文件导入源</string>
|
||||
<string name="blogs_rss_feeds">RSS 源 </string>
|
||||
<string name="blogs_rss_feeds">RSS源 </string>
|
||||
<string name="blogs_rss_feeds_manage_imported">已导入:</string>
|
||||
<string name="blogs_rss_feeds_manage_author">作者:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">最后更新于:</string>
|
||||
@@ -676,8 +676,6 @@
|
||||
<string name="disappearing_messages_summary">在7\u00A0天之后,使此对话中的后续消息自动消失。</string>
|
||||
<!--Settings Actions-->
|
||||
<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>
|
||||
<!--Link Warning-->
|
||||
<string name="link_warning_title">链接警告</string>
|
||||
@@ -727,7 +725,6 @@
|
||||
<string name="permission_camera_title">相机权限</string>
|
||||
<string name="permission_camera_request_body">Briar 需要获得相机权限以扫描二维码。</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_camera_location_title">相机和位置</string>
|
||||
<string name="permission_camera_location_request_body"> Briar 需要相机权限以扫描二维码。\n\nBriar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string>
|
||||
@@ -767,8 +764,6 @@
|
||||
<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_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_request_enable_body">要创建 Wi-Fi 热点,Briar 需要使用 Wi-Fi。请允许它。</string>
|
||||
<string name="hotspot_tab_manual">手动</string>
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.data.MetadataParser;
|
||||
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||
import org.briarproject.bramble.api.db.DbException;
|
||||
import org.briarproject.bramble.api.db.Metadata;
|
||||
import org.briarproject.bramble.api.db.NoSuchGroupException;
|
||||
import org.briarproject.bramble.api.db.Transaction;
|
||||
import org.briarproject.bramble.api.identity.Author;
|
||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
||||
@@ -117,7 +118,23 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
|
||||
// Create a local group to indicate that we've set this client up
|
||||
Group localGroup = contactGroupFactory.createLocalGroup(CLIENT_ID,
|
||||
MAJOR_VERSION);
|
||||
if (db.containsGroup(txn, localGroup.getId())) return;
|
||||
|
||||
if (db.containsGroup(txn, localGroup.getId())) {
|
||||
// Check each contact one by one and see if a group already exists.
|
||||
// If none exists, call addingContact() for that contact.
|
||||
for (Contact c : db.getContacts(txn)) {
|
||||
try {
|
||||
getGroupCount(txn, c.getId());
|
||||
} catch (NoSuchGroupException e) {
|
||||
System.out.println(
|
||||
"no such group for " + c.getAuthor().getName() +
|
||||
" " +
|
||||
c.getAlias());
|
||||
addingContact(txn, c);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
db.addGroup(txn, localGroup);
|
||||
// Set things up for any pre-existing contacts
|
||||
for (Contact c : db.getContacts(txn)) addingContact(txn, c);
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.data.MetadataParser;
|
||||
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||
import org.briarproject.bramble.api.db.DbException;
|
||||
import org.briarproject.bramble.api.db.Metadata;
|
||||
import org.briarproject.bramble.api.db.NoSuchGroupException;
|
||||
import org.briarproject.bramble.api.db.Transaction;
|
||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
||||
import org.briarproject.bramble.api.sync.ClientId;
|
||||
@@ -109,7 +110,24 @@ abstract class SharingManagerImpl<S extends Shareable>
|
||||
// Create a local group to indicate that we've set this client up
|
||||
Group localGroup = contactGroupFactory.createLocalGroup(getClientId(),
|
||||
getMajorVersion());
|
||||
if (db.containsGroup(txn, localGroup.getId())) return;
|
||||
|
||||
if (db.containsGroup(txn, localGroup.getId())) {
|
||||
// Check each contact one by one and see if a group already exists.
|
||||
// If none exists, call addingContact() for that contact.
|
||||
for (Contact c : db.getContacts(txn)) {
|
||||
try {
|
||||
getGroupCount(txn, c.getId());
|
||||
} catch (NoSuchGroupException e) {
|
||||
System.out.println(
|
||||
"no such group for " + c.getAuthor().getName() +
|
||||
" " +
|
||||
c.getAlias());
|
||||
addingContact(txn, c);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
db.addGroup(txn, localGroup);
|
||||
// Set things up for any pre-existing contacts
|
||||
for (Contact c : db.getContacts(txn)) addingContact(txn, c);
|
||||
|
||||
Reference in New Issue
Block a user