Bug Fixes

Bug Fixes
master
Abdul Mannan Saeed 2023-01-04 13:50:41 +05:00
parent c1a2796ccd
commit c29266bd1f
23 changed files with 563 additions and 399 deletions

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\msman\.android\avd\Pixel_2_API_32.avd" />
<value value="C:\Users\msman\.android\avd\Pixel_2_API_25.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-12-31T19:50:31.396108Z" />
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-01-04T08:35:13.346382100Z" />
</component>
</project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +1,3 @@
#Sun Jan 01 02:47:09 PKT 2023
#Wed Jan 04 13:50:34 PKT 2023
\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
json=1692972943
json=1038193561

View File

@ -1,6 +1,6 @@
#
#Sun Jan 01 02:48:31 PKT 2023
#Wed Jan 04 13:50:34 PKT 2023
\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
sdk_analysis_plugin_version=4.8.1
sdk_analysis_plugin_version=4.8.2
set_multidex=true
pCPe4EeU2ZQVwQPeHLgseRqHBX1V5pvo9Piuu4J809dRhadEgukXa1A8po_UeXu5hmPOTaP1v4QPaMKIEOhh50=hGlhanpemGqPOKKAgaXvhyxwZaG9uD68csy1OadWTNhEgKvBWR7-7KSpyFr6nfZ4KMOuBBV5J49s2LLSg-SVxg

View File

@ -71,6 +71,7 @@ android {
sourceSets {
main {
res.srcDirs = project.ext.resource_directories
jniLibs.srcDirs = ['src/main/jniLibs']
}
orionRelease.root = project.ext.releaseRoot

View File

@ -1,352 +1,349 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Permissions -->
<permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_CLIPBOARD" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application
android:allowBackup="true"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:extractNativeLibs="true"
android:icon="@mipmap/ic_launcher"
tools:remove="android:appComponentFactory"
tools:targetApi="p"
android:label="@string/app_name"
android:largeHeap="false"
android:networkSecurityConfig="@xml/gx_network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity
android:launchMode="singleTask"
android:name="com.hiddenservices.onionservices.appManager.advertManager.advertController"
android:exported="true" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkSettings.bookmarkSettingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.orbotManager.orbotController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.proxyStatusManager.proxyStatusController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.settingHomeManager.settingHomeController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:exported="true"
android:label="@string/SETTING_HEADER"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.historyManager.historyController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkHome.bookmarkController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.languageManager.languageController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.helpManager.helpController"
android:configChanges="keyboard|keyboardHidden|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.accessibilityManager.settingAccessibilityController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.clearManager.settingClearController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bridgeManager.bridgeController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.notificationManager.settingNotificationController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.privacyManager.settingPrivacyController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.logManager.settingLogController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.advertSetttings.advertSettingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.advanceManager.settingAdvanceController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.orbotLogManager.orbotLogController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.orbotRequestManager"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.generalManager.settingGeneralController"
android:configChanges="uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.searchEngineManager.settingSearchController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.trackingManager.settingTrackingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController"
android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="fullSensor"
android:windowSoftInputMode="adjustPan">
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity
android:name="com.hiddenservices.onionservices.appManager.homeManager.FakeLauncherActivity"
android:enabled="false"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.hiddenservices.onionservices.appManager.externalCommandManager.externalShortcutController"
android:launchMode="singleTop" />
<activity
android:name="com.hiddenservices.onionservices.appManager.externalCommandManager.externalURLNavigationContoller"
android:exported="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.ASSIST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- Meta and Library & Settings -->
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<meta-data
android:name="io.fabric.ApiKey"
android:value="be76c64dae2519d4ab8daaed88298da14c7c294f" />
<meta-data
android:name="applovin.sdk.key"
android:value="hGlhanpemGqPOKKAgaXvhyxwZaG9uD68csy1OadWTNhEgKvBWR7-7KSpyFr6nfZ4KMOuBBV5J49s2LLSg-SVxg" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<!-- Services & Settings -->
<service
android:name="com.hiddenservices.onionservices.pluginManager.downloadPluginManager.downloadService"
android:enabled="true"
android:exported="false"
android:stopWithTask="true" />
<service
android:name="com.hiddenservices.onionservices.appManager.activityStateManager"/>
<service
android:name="org.torproject.android.service.OrbotService"
android:enabled="true"
android:exported="false"
android:stopWithTask="true" />
<!-- Reciever & Settings -->
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.notificationPluginManager.localEngagementManager"
android:exported="true"
android:permission="TODO"
tools:ignore="ExportedReceiver" />
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.downloadNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="Download_Cancelled" />
</intent-filter>
</receiver>
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.mediaNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="media_toggle" />
</intent-filter>
</receiver>
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.defaultNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="default_toggle" />
</intent-filter>
</receiver>
<receiver
android:name="org.torproject.android.service.StartTorReceiver"
android:exported="true"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="org.torproject.android.intent.action.START" />
</intent-filter>
</receiver>
<receiver
android:name="com.widget.onionservices.widgetManager.widgetController"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/search_widget_manager_info" />
</receiver>
<!-- Providers & Settings -->
<service
android:name=".MediaSessionService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</service>
<receiver android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.hiddenservices.onionservices.provider"
android:exported="false"
android:grantUriPermissions="true"
tools:ignore="ExportedContentProvider">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
<provider
android:name="com.hiddenservices.onionservices.libs.providers.HSContentProvider"
android:authorities="org.torproject.android.ui.hiddenservices.providers.genesishiddenservices"
android:exported="false" />
<provider
android:name="com.hiddenservices.onionservices.libs.providers.OnionServiceContentProvider"
android:authorities="org.torproject.android.ui.v3onionservice.genesishiddenservices"
android:exported="false" />
<provider
android:name="com.hiddenservices.onionservices.libs.providers.ClientAuthContentProviderGenesis"
android:authorities="org.torproject.android.ui.v3onionservice.genesishiddenservices.clientauth"
android:exported="false" />
<provider
android:name="com.hiddenservices.onionservices.libs.providers.CookieContentProvider"
android:authorities="org.torproject.android.ui.hiddenservices.providers.genesishiddenservices.cookie"
android:exported="false" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
</application>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Permissions -->
<permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="27" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_CLIPBOARD" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application
android:allowBackup="true"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:extractNativeLibs="true"
android:icon="@mipmap/ic_launcher"
tools:remove="android:appComponentFactory"
tools:targetApi="p"
android:label="@string/app_name"
android:largeHeap="false"
android:networkSecurityConfig="@xml/gx_network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity
android:launchMode="singleTask"
android:name="com.hiddenservices.onionservices.appManager.advertManager.advertController"
android:exported="true" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkSettings.bookmarkSettingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.orbotManager.orbotController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.proxyStatusManager.proxyStatusController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.settingHomeManager.settingHomeController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:exported="true"
android:label="@string/SETTING_HEADER"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.historyManager.historyController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkHome.bookmarkController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.languageManager.languageController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.helpManager.helpController"
android:configChanges="keyboard|keyboardHidden|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.accessibilityManager.settingAccessibilityController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.clearManager.settingClearController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:label="@string/SETTING_HEADER"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bridgeManager.bridgeController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.notificationManager.settingNotificationController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.privacyManager.settingPrivacyController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.logManager.settingLogController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.advertSetttings.advertSettingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.advanceManager.settingAdvanceController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.orbotLogManager.orbotLogController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.orbotRequestManager"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.generalManager.settingGeneralController"
android:configChanges="uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.searchEngineManager.settingSearchController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.settingManager.trackingManager.settingTrackingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController"
android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="fullSensor"
android:windowSoftInputMode="adjustPan">
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity
android:name="com.hiddenservices.onionservices.appManager.homeManager.FakeLauncherActivity"
android:enabled="false"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.hiddenservices.onionservices.appManager.externalCommandManager.externalShortcutController"
android:launchMode="singleTop" />
<activity
android:name="com.hiddenservices.onionservices.appManager.externalCommandManager.externalURLNavigationContoller"
android:exported="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.ASSIST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- Meta and Library & Settings -->
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<meta-data
android:name="io.fabric.ApiKey"
android:value="be76c64dae2519d4ab8daaed88298da14c7c294f" />
<meta-data
android:name="applovin.sdk.key"
android:value="hGlhanpemGqPOKKAgaXvhyxwZaG9uD68csy1OadWTNhEgKvBWR7-7KSpyFr6nfZ4KMOuBBV5J49s2LLSg-SVxg" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<!-- Services & Settings -->
<service
android:name="com.hiddenservices.onionservices.pluginManager.downloadPluginManager.downloadService"
android:enabled="true"
android:exported="false"
android:stopWithTask="true" />
<service
android:name="com.hiddenservices.onionservices.appManager.activityStateManager"/>
<service
android:name="org.torproject.android.service.OrbotService"
android:enabled="true"
android:exported="false"
android:stopWithTask="true" />
<!-- Reciever & Settings -->
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.notificationPluginManager.localEngagementManager"
android:exported="true"
android:permission="TODO"
tools:ignore="ExportedReceiver" />
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.downloadNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="Download_Cancelled" />
</intent-filter>
</receiver>
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.mediaNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="media_toggle" />
</intent-filter>
</receiver>
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.defaultNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="default_toggle" />
</intent-filter>
</receiver>
<receiver
android:name="org.torproject.android.service.StartTorReceiver"
android:exported="true"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="org.torproject.android.intent.action.START" />
</intent-filter>
</receiver>
<receiver
android:name="com.widget.onionservices.widgetManager.widgetController"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/search_widget_manager_info" />
</receiver>
<!-- Providers & Settings -->
<service
android:name=".MediaSessionService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</service>
<receiver android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.hiddenservices.onionservices.provider"
android:exported="false"
android:grantUriPermissions="true"
tools:ignore="ExportedContentProvider">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
<provider
android:name="com.hiddenservices.onionservices.libs.providers.HSContentProvider"
android:authorities="org.torproject.android.ui.hiddenservices.providers.genesishiddenservices"
android:exported="false" />
<provider
android:name="com.hiddenservices.onionservices.libs.providers.OnionServiceContentProvider"
android:authorities="org.torproject.android.ui.v3onionservice.genesishiddenservices"
android:exported="false" />
<provider
android:name="com.hiddenservices.onionservices.libs.providers.ClientAuthContentProviderGenesis"
android:authorities="org.torproject.android.ui.v3onionservice.genesishiddenservices.clientauth"
android:exported="false" />
<provider
android:name="com.hiddenservices.onionservices.libs.providers.CookieContentProvider"
android:authorities="org.torproject.android.ui.hiddenservices.providers.genesishiddenservices.cookie"
android:exported="false" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
</application>
</manifest>

View File

@ -69,6 +69,10 @@ class bookmarkViewController {
}
private void initPostUI() {
mSearchInput.setLongClickable(false);
mSearchInput.setOnLongClickListener(v -> false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = mContext.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

View File

@ -36,6 +36,9 @@ class bookmarkSettingViewController {
}
private void initPostUI() {
mBookmarName.setLongClickable(false);
mBookmarName.setOnLongClickListener(v -> false);
sharedUIMethod.updateStatusBar(mContext);
}

View File

@ -50,6 +50,8 @@ class bridgeViewController {
private void initPostUI() {
sharedUIMethod.updateStatusBar(mContext);
mBridgeSettingBridgeCustom.setLongClickable(false);
mBridgeSettingBridgeCustom.setOnLongClickListener(v -> false);
}
private void animateColor(TextView p_view, int p_from, int p_to, String p_command, int p_duration) {

View File

@ -67,6 +67,10 @@ class historyViewController {
}
private void initPostUI() {
mSearchInput.setLongClickable(false);
mSearchInput.setOnLongClickListener(v -> false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = mContext.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

View File

@ -3,6 +3,7 @@ package com.hiddenservices.onionservices.appManager.homeManager.geckoManager;
import android.Manifest;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
@ -35,7 +36,7 @@ class geckoDownloadManager {
}
private void downloadFile(WebResponse response, String userAgent, AppCompatActivity context, geckoSession session, eventObserver.eventListener event) {
if (ContextCompat.checkSelfPermission(context,
if ( Build.VERSION.SDK_INT <= Build.VERSION_CODES.O_MR1 && ContextCompat.checkSelfPermission(context,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(context,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},

View File

@ -5,6 +5,7 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@ -20,6 +21,7 @@ import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.MimeTypeMap;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
@ -35,7 +37,12 @@ import android.widget.TimePicker;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ShareCompat;
import com.hiddenservices.onionservices.appManager.activityContextManager;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -61,9 +68,16 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
mActivity = activity;
}
public void stopMedia(){
try {
activityContextManager.getInstance().getHomeController().onKillMedia();
}catch (Exception ex){}
}
@Override
public GeckoResult<PromptResponse> onAlertPrompt(final GeckoSession session,
final AlertPrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -80,6 +94,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
@Override
public GeckoResult<PromptResponse> onButtonPrompt(final GeckoSession session,
final ButtonPrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -111,16 +126,66 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
return res;
}
public static String getMimeType(Context context, Uri uri) {
String extension;
//Check uri format to avoid null
if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
//If scheme is a content
final MimeTypeMap mime = MimeTypeMap.getSingleton();
extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uri));
} else {
//If scheme is a File
//This will replace white spaces with %20 and also other special characters. This will avoid returning null values on file name with spaces and special characters.
extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.getPath())).toString());
}
return extension;
}
static boolean mPopupOpened = false;
@Override
public GeckoResult<PromptResponse> onSharePrompt(final GeckoSession session,
final SharePrompt prompt) {
return GeckoResult.fromValue(prompt.dismiss());
stopMedia();
new Thread(){
public void run(){
try {
sleep(4000);
mPopupOpened = false;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
if(!mPopupOpened){
mPopupOpened = true;
}else {
return GeckoResult.fromValue(prompt.confirm(SharePrompt.Result.ABORT));
}
try {
String m_data = prompt.uri;
if(prompt.text!=null){
m_data += " : " + prompt.text;
}
ShareCompat.IntentBuilder.from(mActivity)
.setType("text/x-uri")
.setChooserTitle(prompt.title)
.setText(m_data)
.startChooser();
}catch (Exception ex){}
return GeckoResult.fromValue(prompt.confirm(SharePrompt.Result.SUCCESS));
}
@Nullable
@Override
public GeckoResult<PromptResponse> onRepostConfirmPrompt(final GeckoSession session,
final RepostConfirmPrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -157,6 +222,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
@Override
public GeckoResult<PromptResponse> onBeforeUnloadPrompt(final GeckoSession session,
final BeforeUnloadPrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -185,6 +251,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
}
private int getViewPadding(final AlertDialog.Builder builder) {
stopMedia();
final TypedArray attr = builder.getContext().obtainStyledAttributes(
new int[]{android.R.attr.listPreferredItemPaddingLeft});
final int padding = attr.getDimensionPixelSize(0, 1);
@ -194,6 +261,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
private LinearLayout addStandardLayout(final AlertDialog.Builder builder,
final String title, final String msg) {
stopMedia();
final ScrollView scrollView = new ScrollView(builder.getContext());
final LinearLayout container = new LinearLayout(builder.getContext());
final int horizontalPadding = getViewPadding(builder);
@ -212,6 +280,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
final BasePrompt prompt,
final GeckoResult<PromptResponse> response) {
final AlertDialog dialog = builder.create();
stopMedia();
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(final DialogInterface dialog) {
@ -227,6 +296,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
public GeckoResult<PromptResponse> onTextPrompt(final GeckoSession session,
final TextPrompt prompt) {
final Activity activity = mActivity;
stopMedia();
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
}
@ -255,6 +325,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
public GeckoResult<PromptResponse> onAuthPrompt(final GeckoSession session,
final AuthPrompt prompt) {
final Activity activity = mActivity;
stopMedia();
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
}
@ -321,6 +392,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
private void addChoiceItems(final int type, final ArrayAdapter<ModifiableChoice> list,
final ChoicePrompt.Choice[] items, final String indent) {
stopMedia();
if (type == ChoicePrompt.Type.MENU) {
for (final ChoicePrompt.Choice item : items) {
list.add(new ModifiableChoice(item));
@ -354,6 +426,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
final String message, final int type,
final ChoicePrompt.Choice[] choices, final ChoicePrompt prompt,
final GeckoResult<PromptResponse> res) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
res.complete(prompt.dismiss());
@ -533,6 +606,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
@Override
public GeckoResult<PromptResponse> onChoicePrompt(final GeckoSession session,
final ChoicePrompt prompt) {
stopMedia();
final GeckoResult<PromptResponse> res = new GeckoResult<PromptResponse>();
onChoicePromptImpl(session, prompt.title, prompt.message, prompt.type, prompt.choices,
prompt, res);
@ -550,6 +624,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
@Override
public GeckoResult<PromptResponse> onColorPrompt(final GeckoSession session,
final ColorPrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -661,6 +736,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
@Override
public GeckoResult<PromptResponse> onDateTimePrompt(final GeckoSession session,
final DateTimePrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -779,6 +855,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
@Override
@TargetApi(19)
public GeckoResult<PromptResponse> onFilePrompt(GeckoSession session, FilePrompt prompt) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return GeckoResult.fromValue(prompt.dismiss());
@ -837,6 +914,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
}
public void onFileCallbackResult(final int resultCode, final Intent data) {
stopMedia();
if (mFileResponse == null) {
return;
}
@ -875,6 +953,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
public void onPermissionPrompt(final GeckoSession session, final String title,
final GeckoSession.PermissionDelegate.Callback callback) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
callback.reject();
@ -900,6 +979,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
}
public void onSlowScriptPrompt(GeckoSession geckoSession, String title, GeckoResult<SlowScriptResponse> reportAction) {
stopMedia();
final Activity activity = mActivity;
if (activity == null) {
return;
@ -962,6 +1042,7 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
final String[] videoNames, final String[] audioNames,
final GeckoSession.PermissionDelegate.MediaCallback callback) {
final Activity activity = mActivity;
stopMedia();
if (activity == null || (video == null && audio == null)) {
callback.reject();
return;
@ -1009,12 +1090,14 @@ final class geckoPromptView implements GeckoSession.PromptDelegate {
public void onMediaPrompt(final GeckoSession session, final String title,
final GeckoSession.PermissionDelegate.MediaSource[] video, final GeckoSession.PermissionDelegate.MediaSource[] audio,
final GeckoSession.PermissionDelegate.MediaCallback callback) {
stopMedia();
onMediaPrompt(session, title, video, audio, null, null, callback);
}
@Override
public GeckoResult<PromptResponse> onPopupPrompt(final GeckoSession session,
final PopupPrompt prompt) {
stopMedia();
return GeckoResult.fromValue(prompt.confirm(AllowOrDeny.ALLOW));
}
}

View File

@ -162,6 +162,7 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
public void onActivated(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) {
MediaSession.Delegate.super.onActivated(session, mediaSession);
mMediaSession = mediaSession;
isMediaRunning = true;
}
@Override
@ -176,7 +177,8 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
@Override
public void onMetadata(@NonNull GeckoSession session, @NonNull MediaSession mediaSession, @NonNull MediaSession.Metadata meta) {
mMediaTitle = meta.title;
if(!isMediaRunning || mediaDelegateItem == null){
if(mediaDelegateItem == null){
return;
}
@ -193,7 +195,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
}
}.start();
MediaSession.Delegate.super.onMetadata(session, mediaSession, meta);
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, !isMediaRunning);
if(isMediaRunning){
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, !isMediaRunning);
}
}
@Override

View File

@ -1,6 +1,8 @@
package com.hiddenservices.onionservices.appManager.homeManager.homeController;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.app.Notification.FLAG_AUTO_CANCEL;
import static android.os.Build.VERSION.SDK_INT;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
@ -33,6 +35,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.speech.RecognizerIntent;
import android.text.Editable;
import android.text.TextWatcher;
@ -51,6 +54,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
@ -273,6 +277,37 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (!status.sTorBrowsing) {
onStartApplication(null);
}
if(status.sNoTorTriggered){
if(status.sSettingDefaultSearchEngine.equals(constants.CONST_BACKEND_GENESIS_URL)){
status.sSettingDefaultSearchEngine = constants.CONST_BACKEND_DUCK_DUCK_GO_URL;
}
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
Intent mServiceIntent = new Intent(this.getApplicationContext(), OrbotService.class);
this.stopService(mServiceIntent);
if (OrbotService.getServiceObject() != null) {
OrbotService.getServiceObject().onDestroy();
}
new Handler().postDelayed(() ->
{
onShowDefaultNotification();
}, 500);
}else {
onHideDefaultNotification();
int notificationStatus = status.sBridgeNotificationManual;
if (notificationStatus == 0) {
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
activityContextManager.getInstance().getHomeController().onShowDefaultNotification();
} else {
if(status.mThemeApplying){
new Handler().postDelayed(() ->
{
onHideDefaultNotification();
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_ENABLE_NOTIFICATION);
}, 500);
}
}
}
}
public void initBundle() {
@ -369,7 +404,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (status.mThemeApplying) {
mSplashScreen.setAlpha(0);
mSplashScreen.setVisibility(View.GONE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (SDK_INT >= Build.VERSION_CODES.M) {
mHomeViewController.initStatusBarColor(false);
} else {
Window window = getWindow();
@ -586,7 +621,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
String strManufacturer = android.os.Build.MANUFACTURER;
if ((Build.VERSION.SDK_INT == Build.VERSION_CODES.O || Build.VERSION.SDK_INT == Build.VERSION_CODES.O_MR1) && strManufacturer.equals("samsung")) {
if ((SDK_INT == Build.VERSION_CODES.O || SDK_INT == Build.VERSION_CODES.O_MR1) && strManufacturer.equals("samsung")) {
PackageManager packageManager = getApplicationContext().getPackageManager();
packageManager.setComponentEnabledSetting(new ComponentName(getApplicationContext(), widgetController.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
} else {
@ -858,7 +893,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
PendingIntent action;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (SDK_INT >= Build.VERSION_CODES.M) {
action = PendingIntent.getActivity(context, 1025, new Intent(context, homeController.class), PendingIntent.FLAG_IMMUTABLE); // Flag indicating that if the described PendingIntent already exists, the current one should be canceled before generating a new one.
}else {
action = PendingIntent.getActivity(context, 1025, new Intent(context, homeController.class), 0); // Flag indicating that if the described PendingIntent already exists, the current one should be canceled before generating a new one.
@ -873,13 +908,13 @@ public class homeController extends AppCompatActivity implements ComponentCallba
.setColor(getResources().getColor(R.color.c_tab_border))
.setContentTitle(title);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
if (SDK_INT >= Build.VERSION_CODES.O)
{
String channelId = "default_home_notification";
NotificationChannel channel = new NotificationChannel(channelId, "default_home_notification", NotificationManager.IMPORTANCE_DEFAULT);
channel.setSound(null, null);
manager.createNotificationChannel(channel);
builder.setChannelId(channelId);
//String channelId = "default_home_notification";
//NotificationChannel channel = new NotificationChannel(channelId, "default_home_notification", NotificationManager.IMPORTANCE_DEFAULT);
//channel.setSound(null, null);
//manager.createNotificationChannel(channel);
//builder.setChannelId(channelId);
}
Intent intentActionOpen = new Intent(context,homeController.class);
@ -895,14 +930,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
Notification notification = builder.build();
PendingIntent dummyIntent = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (SDK_INT >= Build.VERSION_CODES.M) {
PendingIntent.getActivity(context, 1025, new Intent(), PendingIntent.FLAG_IMMUTABLE);
}else {
PendingIntent.getActivity(context, 1025, new Intent(), 0);
}
notification.fullScreenIntent = dummyIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
if (SDK_INT >= Build.VERSION_CODES.TIRAMISU){
notification.flags = Notification.FLAG_AUTO_CANCEL|Notification.FLAG_ONGOING_EVENT;
}else {
notification.flags |= Notification.FLAG_NO_CLEAR;
@ -974,7 +1009,6 @@ public class homeController extends AppCompatActivity implements ComponentCallba
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onDestroy() {
status.sNoTorTriggered = false;
orbotLocalConstants.mAppForceExit = true;
NotificationManagerCompat.from(this).cancel(1030);
if(manager!=null){
@ -1015,6 +1049,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
NotificationManagerCompat.from(this).cancel(1030);
if (!status.mThemeApplying) {
status.sNoTorTriggered = false;
new Handler().postDelayed(() ->
{
android.os.Process.killProcess(android.os.Process.myPid());
@ -2013,19 +2048,34 @@ public class homeController extends AppCompatActivity implements ComponentCallba
onHomeButton(null);
}
private void requestWritePermission() {
if (SDK_INT >= Build.VERSION_CODES.R) {
try {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse(String.format("package:%s",getApplicationContext().getPackageName())));
startActivityForResult(intent, 2296);
} catch (Exception e) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivityForResult(intent, 2296);
}
} else {
//below android 11
ActivityCompat.requestPermissions(this, new String[]{WRITE_EXTERNAL_STORAGE}, 1);
}
}
public void onDownloadFile() {
mGeckoClient.downloadFile(homeController.this);
}
public void onManualDownload(String url) {
/*EXTERNAL STORAGE REQUEST*/
mGeckoClient.manual_download(url, this);
}
public void onManualDownloadFileName(String pURL, String pPath) {
/*EXTERNAL STORAGE REQUEST*/
mGeckoClient.manualDownloadWithName(pURL, pPath, this);
}
@ -2711,7 +2761,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (mNewTab.isPressed() || mTabFragment == null || mTabFragment.getVisibility() == View.VISIBLE || mHomeViewController.getMenuPopup() != null && mHomeViewController.getMenuPopup().isShowing()) {
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (SDK_INT >= Build.VERSION_CODES.O) {
if (this.isActivityTransitionRunning()) {
return;
}

View File

@ -244,6 +244,12 @@ class homeViewController {
mCopyright.setVisibility(View.GONE);
}
mSearchbar.setLongClickable(false);
mSearchbar.setOnLongClickListener(v -> false);
mFindText.setLongClickable(false);
mFindText.setOnLongClickListener(v -> false);
}
public void initSearchEngineView() {

View File

@ -36,11 +36,13 @@ class crawlerDataModel {
private Set<String> mDuplicate;
private ArrayList<crawlerRowModel> mHTML;
private AppCompatActivity mContext;
RequestQueue mRequestQueue;
crawlerDataModel(AppCompatActivity pContext) {
mDuplicate = new HashSet<>();
mHTML = new ArrayList<>();
mContext = pContext;
mRequestQueue = Volley.newRequestQueue(mContext, new ProxiedHurlStack());
}
private void onInit() {
@ -82,7 +84,6 @@ class crawlerDataModel {
String mURL = strings.GENERIC_EMPTY_STR;
private void onSendRequest() {
RequestQueue mRequestQueue = Volley.newRequestQueue(mContext, new ProxiedHurlStack());
String url = "http://167.86.99.31/user_index/";
StringRequest mRequestData = new StringRequest(Request.Method.POST, url, response -> {

View File

@ -600,8 +600,8 @@ public class helperMethod {
}
public static void vibrate(AppCompatActivity context) {
Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(50);
// Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
// v.vibrate(50);
}
public static void shareURL(AppCompatActivity context, String p_share) {
@ -975,9 +975,12 @@ public class helperMethod {
}
public static boolean checkPermissions(AppCompatActivity context) {
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.O_MR1){
return true;
}
String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
};
int result;
@ -989,7 +992,7 @@ public class helperMethod {
}
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(context, listPermissionsNeeded.toArray(new String[0]), 100);
ActivityCompat.requestPermissions(context, listPermissionsNeeded.toArray(new String[0]), 1050);
return false;
}
return true;

View File

@ -22,24 +22,18 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController;
import com.hiddenservices.onionservices.constants.constants;
import com.hiddenservices.onionservices.constants.enums;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.constants.strings;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import com.hiddenservices.onionservices.pluginManager.pluginController;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import com.example.myapplication.R;
import com.google.android.material.switchmaterial.SwitchMaterial;
import org.mozilla.geckoview.ContentBlocking;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@ -281,6 +275,12 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
mPopupCreateBookmarkNext.setOnClickListener(this);
}
private void disableLongClick(EditText pEdittext){
pEdittext.setLongClickable(false);
pEdittext.setOnLongClickListener(v -> false);
}
private void onUpdateBridges() {
initializeDialog(R.layout.popup_bridge_setting_custom, Gravity.CENTER);
mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
@ -289,6 +289,8 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
String mBridgeType = (String) mEvent.invokeObserver(null, M_BRIDGE_TYPE);
EditText mBridgeSettingCustomInput = mDialog.findViewById(R.id.pBridgeSettingCustomInput);
EditText mBridgeSettingBridgeType = mDialog.findViewById(R.id.pBridgeSettingBridgeType);
disableLongClick(mBridgeSettingCustomInput);
disableLongClick(mBridgeSettingBridgeType);
Button mBridgeSettingCustomRequest = mDialog.findViewById(R.id.pBridgeSettingCustomRequest);
ImageButton mBridgeSettingCustomClear = mDialog.findViewById(R.id.pBridgeSettingCustomClear);
Button mBridgeSettingCustomNext = mDialog.findViewById(R.id.pBridgeSettingCustomNext);
@ -568,6 +570,7 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
onDismiss();
helperMethod.hideKeyboard(mContext);
EditText mPopupCreateBookmarkInput = mDialog.findViewById(R.id.pPopupCreateBookmarkInput);
disableLongClick(mPopupCreateBookmarkInput);
String mBookmarkName = mPopupCreateBookmarkInput.getText().toString();
String mURL = mData.get(0).toString().replace(CONST_GENESIS_ONION, CONST_GENESIS_ONION_V2);
if (mURL.startsWith(constants.CONST_PRIVACY_POLICY_URL_NON_TOR)) {
@ -607,11 +610,13 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
});
} else if (view.getId() == R.id.pBridgeSettingCustomClear) {
EditText mBridges = mDialog.findViewById(R.id.pBridgeSettingCustomInput);
disableLongClick(mBridges);
TextView mTextView = mDialog.findViewById(R.id.pBridgeSettingCustomError);
mBridges.setText(strings.GENERIC_EMPTY_STR);
mTextView.animate().setDuration(250).alpha(0);
} else if (view.getId() == R.id.pBridgeSettingCustomNext) {
disableLongClick(mDialog.findViewById(R.id.pBridgeSettingCustomInput));
String mBridges = ((EditText) mDialog.findViewById(R.id.pBridgeSettingCustomInput)).getText().toString();
boolean mBridgeTypeExist = !mBridges.contains("obfs3") && !mBridges.contains("obfs4") && !mBridges.contains("fle") && !mBridges.contains("meek");
@ -636,6 +641,7 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
onDismiss();
mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
helperMethod.hideKeyboard(mContext);
disableLongClick(mDialog.findViewById(R.id.pBridgeSettingBridgeType));
mEvent.invokeObserver(Arrays.asList(mBridges, ((EditText) mDialog.findViewById(R.id.pBridgeSettingBridgeType)).getText().toString()), M_SET_BRIDGES);
} else if (view.getId() == R.id.pPopupRateFailureNext) {
onDismiss();

View File

@ -129,7 +129,6 @@
android:background="@color/c_home_side"
android:translationZ="1dp"
tools:ignore="RtlSymmetry" />
<com.hiddenservices.onionservices.appManager.homeManager.homeController.editTextManager
android:id="@+id/pSearchInput"
android:layout_width="0dp"

View File

@ -1,6 +1,6 @@
/* Version */
project.ext.vname = 'Build | Dark-Origin 1.0.7.2'
project.ext.vcode = 465
project.ext.vname = 'Build | Dark-Origin 1.0.9.2'
project.ext.vcode = 510
project.ext.buildType = 'release'
/* dimension */
@ -30,7 +30,7 @@ project.ext.splitEnabled = true
/* Application Preferences */
project.ext.compile_sdk_version = 33
project.ext.min_sdk_version = 21
project.ext.target_sdk_version = 32
project.ext.target_sdk_version = 31
project.ext.build_tool_version = '33'
project.ext.ndk_version = '21.4.7075529'
project.ext.application_id = "com.hiddenservices.onionservices"

View File

@ -12,7 +12,7 @@ android {
}
defaultConfig {
minSdkVersion 16
minSdkVersion 21
targetSdkVersion 32
}
@ -47,7 +47,7 @@ dependencies {
implementation 'com.jaredrummler:android-shell:1.0.0'
implementation 'androidx.core:core:1.7.0'
implementation 'androidx.core:core:1.9.0'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
testImplementation 'junit:junit:4.13.2'
@ -58,7 +58,7 @@ dependencies {
api 'info.guardianproject:jtorctl:0.4.5.7'
implementation 'info.guardianproject:tor-android:0.4.6.10'
implementation 'androidx.work:work-runtime-ktx:2.8.0-alpha02'
implementation 'androidx.work:work-runtime-ktx:2.8.0-rc01'
api libs.guardian_jtorctl
implementation(
libs.ipt_proxy,