世界 %!s(int64=3) %!d(string=hai) anos
pai
achega
2d20fc9e24

+ 5 - 2
app/src/main/java/io/nekohasekai/sagernet/BootReceiver.kt

@@ -29,6 +29,7 @@ import android.content.pm.PackageManager
 import android.os.Build
 import io.nekohasekai.sagernet.bg.SubscriptionUpdater
 import io.nekohasekai.sagernet.database.DataStore
+import io.nekohasekai.sagernet.ktx.Logs
 import io.nekohasekai.sagernet.ktx.app
 import io.nekohasekai.sagernet.ktx.runOnDefaultDispatcher
 
@@ -44,8 +45,10 @@ class BootReceiver : BroadcastReceiver() {
     }
 
     override fun onReceive(context: Context, intent: Intent) {
-        runOnDefaultDispatcher {
-            SubscriptionUpdater.reconfigureUpdater()
+        if (intent.action != Intent.ACTION_LOCKED_BOOT_COMPLETED) runOnDefaultDispatcher {
+            runCatching {
+                SubscriptionUpdater.reconfigureUpdater()
+            }
         }
 
         if (!DataStore.persistAcrossReboot) {   // sanity check

+ 0 - 1
app/src/main/java/io/nekohasekai/sagernet/bg/BaseService.kt

@@ -469,7 +469,6 @@ class BaseService {
         }
 
         fun persistStats() {
-            Logs.w(Exception())
             data.proxy?.persistStats()
             (this as? VpnService)?.persistAppStats()
         }

+ 4 - 6
app/src/main/java/io/nekohasekai/sagernet/ui/AssetsActivity.kt

@@ -126,10 +126,9 @@ class AssetsActivity : ThemedActivity() {
                 alert(getString(R.string.route_not_asset, fileName)).show()
                 return@registerForActivityResult
             }
-            val filesDir = getExternalFilesDir(null) ?: filesDir
 
             runOnDefaultDispatcher {
-                val outFile = File(filesDir, fileName).apply {
+                val outFile = File(app.externalAssets, fileName).apply {
                     parentFile?.mkdirs()
                 }
 
@@ -165,14 +164,13 @@ class AssetsActivity : ThemedActivity() {
         }
 
         fun reloadAssets() {
-            val filesDir = getExternalFilesDir(null) ?: filesDir
-            val files = filesDir.listFiles()
+            val files = app.externalAssets.listFiles()
                 ?.filter { it.isFile && it.name.endsWith(".dat") && it.name !in internalFiles }
             assets.clear()
-            assets.add(File(filesDir, "geoip.dat"))
+            assets.add(File(app.externalAssets, "geoip.dat"))
             assets.add(
                 File(
-                    filesDir, "geosite.dat"
+                    app.externalAssets, "geosite.dat"
                 )
             )
             if (files != null) assets.addAll(files)

+ 4 - 1
app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt

@@ -283,7 +283,10 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() {
 
         enablePcap.setOnPreferenceChangeListener { _, newValue ->
             if (newValue as Boolean) {
-                val path = File(app.externalAssets, "pcap").absolutePath
+                val path = File(
+                    app.getExternalFilesDir(null)?.apply { mkdirs() } ?: app.filesDir,
+                    "pcap"
+                ).absolutePath
                 MaterialAlertDialogBuilder(requireContext()).apply {
                     setTitle(R.string.pcap)
                     setMessage(resources.getString(R.string.pcap_notice, path))

+ 1 - 0
app/src/main/res/xml/global_preferences.xml

@@ -199,6 +199,7 @@
             app:title="@string/remote_dns"
             app:useSimpleSummaryProvider="true" />
         <SwitchPreference
+            app:defaultValue="true"
             app:icon="@drawable/ic_baseline_home_24"
             app:key="useLocalDnsAsDirectDns"
             app:title="@string/use_local_dns_as_direct_dns" />