diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a023e1b7..4a585b18 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -529,6 +529,8 @@ + + + + diff --git a/app/src/main/java/com/deniscerri/ytdl/App.kt b/app/src/main/java/com/deniscerri/ytdl/App.kt index 5fa1abf2..787b5bf9 100644 --- a/app/src/main/java/com/deniscerri/ytdl/App.kt +++ b/app/src/main/java/com/deniscerri/ytdl/App.kt @@ -2,7 +2,9 @@ package com.deniscerri.ytdl import android.app.Application import android.content.Intent +import android.os.Build import android.os.Looper +import android.webkit.WebView import android.widget.Toast import androidx.core.content.ContextCompat import androidx.core.content.edit @@ -62,6 +64,15 @@ class App : Application() { BgUtilsPoTokenGeneratorUtil.acquireServer(this@App) } + val processName = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + getProcessName() + } else { + packageName + } + if (processName.endsWith(":incognito_process") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + WebView.setDataDirectorySuffix("incognito_store") + } + }catch (e: Exception){ Looper.prepare().runCatching { Toast.makeText(this@App, e.message, Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/com/deniscerri/ytdl/database/DBManager.kt b/app/src/main/java/com/deniscerri/ytdl/database/DBManager.kt index 008c2910..2be5238a 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/DBManager.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/DBManager.kt @@ -101,6 +101,7 @@ abstract class DBManager : RoomDatabase(){ ) .addTypeConverter(Converters()) .addMigrations(*Migrations.migrationList) + .enableMultiInstanceInvalidation() .build() instance = dbInstance dbInstance diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt index dd254f7e..c8acc430 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt @@ -207,12 +207,14 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener { save.isVisible = item != null getCookies.setOnClickListener { - val myIntent = Intent(requireContext(), WebViewActivity::class.java) - myIntent.putExtra("url", urlEditText.text.toString()) - myIntent.putExtra("description", descriptionEditText.text.toString()) - myIntent.putExtra("incognito", incognitoSwitch.isChecked) + val intent = Intent( + requireContext(), + if (incognitoSwitch.isChecked) WebViewActivityIncognito::class.java else WebViewActivity::class.java + ) + intent.putExtra("url", urlEditText.text.toString()) + intent.putExtra("description", descriptionEditText.text.toString()) layout.dismiss() - startActivity(myIntent) + startActivity(intent) } item?.apply { diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt index a13d6f56..d8c504d5 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt @@ -1,6 +1,8 @@ package com.deniscerri.ytdl.ui.more.cookies import android.annotation.SuppressLint +import android.app.Application +import android.content.Intent import android.content.SharedPreferences import android.os.Build import android.os.Bundle @@ -29,7 +31,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class WebViewActivity : BaseActivity() { + +open class WebViewActivity : BaseActivity() { private lateinit var cookiesViewModel: CookieViewModel private var webView: WebView? = null private lateinit var toolbar: MaterialToolbar @@ -41,15 +44,18 @@ class WebViewActivity : BaseActivity() { private lateinit var webViewClient: WebViewClient private lateinit var preferences: SharedPreferences - private var incognito: Boolean = false - @SuppressLint("SetJavaScriptEnabled") public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.webview_activity) url = intent.getStringExtra("url") ?: return finish() description = intent.getStringExtra("description") ?: "" - incognito = intent.getBooleanExtra("incognito", false) + + val incognito = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + Application.getProcessName() + } else { + this@WebViewActivity.packageName + }.endsWith(":incognito_process") cookiesViewModel = ViewModelProvider(this)[CookieViewModel::class.java] lifecycleScope.launch { @@ -61,15 +67,10 @@ class WebViewActivity : BaseActivity() { toolbar.menu.children.firstOrNull { it.itemId == R.id.get_data_sync_id }?.isVisible = false } - toolbar.menu.children.firstOrNull { it.itemId == R.id.incognito }?.isChecked = incognito toolbar.menu.children.firstOrNull { it.itemId == R.id.get_data_sync_id }?.isVisible = false toolbar.setOnMenuItemClickListener { m : MenuItem -> when(m.itemId) { - R.id.incognito -> { - intent.putExtra("incognito", !incognito) - recreate() - } R.id.desktop -> { m.isChecked = !m.isChecked webView.apply { diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivityIncognito.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivityIncognito.kt new file mode 100644 index 00000000..5d6ff532 --- /dev/null +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivityIncognito.kt @@ -0,0 +1,4 @@ +package com.deniscerri.ytdl.ui.more.cookies + +class WebViewActivityIncognito : WebViewActivity() { +} \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt index de3c5327..1d889bf1 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt @@ -67,8 +67,6 @@ class PoTokenWebViewLoginActivity : BaseActivity() { lifecycleScope.launch { val appbar = findViewById(R.id.webview_appbarlayout) toolbar = appbar.findViewById(R.id.webviewToolbar) - //hide incognito - toolbar.menu.children.firstOrNull { it.itemId == R.id.incognito }?.isVisible = false toolbar.setOnMenuItemClickListener { m : MenuItem -> when(m.itemId) { R.id.get_data_sync_id -> { diff --git a/app/src/main/res/menu/webview_menu.xml b/app/src/main/res/menu/webview_menu.xml index 28838e06..bde7ce50 100644 --- a/app/src/main/res/menu/webview_menu.xml +++ b/app/src/main/res/menu/webview_menu.xml @@ -6,13 +6,6 @@ android:id="@+id/get_data_sync_id" android:title="@string/get_data_sync_id" /> - - -