Compare commits

...

14 Commits

15 changed files with 140 additions and 38 deletions

3
.gitignore vendored
View File

@ -3,3 +3,6 @@ signing.properties
.idea
.idea/
.gradle/
local.properties
override.properties
build

View File

@ -1,3 +1,22 @@
2.0.1
* Fixes gitlab#49 by applying MUTABLE or IMMUTABLE flags across all PendingIntents
2.0.0
* Updates router to version 2.0.0
* Updates gradle plugin
* Remove Firefox from supported browsers list due to lack of about:config support
* Add Privacy Browser to supported browsers list and write guide for it
1.9.1
* Switches back to mavenCentral builds
* Fixes build process for F-Droid main
* Using tag i2p.i2p:i2p-android-1.9.0
* Allow b32 and blinded b32 to validate in I2PTunnel UI
1.9.0
* Updates router to version 1.9.0
* Using tag i2p.i2p:i2p-android-1.9.0
1.8.2
* This update fixes a bug where Family Keys are incorrectly handled by the Android router, leading
to a crash.

View File

@ -5,11 +5,11 @@ repositories {
}
android {
compileSdkVersion 28
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
defaultConfig {
versionCode 4745270
versionCode 4745273
versionName "$I2P_ANDROID_VERSION"
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
// For Espresso
@ -31,15 +31,18 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
disable 'MissingDefaultResource'
}
packagingOptions {
exclude 'LICENSE.txt'
resources {
excludes += ['LICENSE.txt']
}
}
flavorDimensions 'tier'
productFlavors {
@ -56,7 +59,6 @@ android {
applicationId 'net.i2p.android.router'
}
}
buildToolsVersion '28.0.3'
}
dependencies {
@ -88,6 +90,10 @@ dependencies {
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
project.ext.i2pbase = "../i2p.i2p"
def Properties props = new Properties()
def propFile = new File(project(':routerjars').projectDir, 'local.properties')

View File

@ -27,6 +27,8 @@
<service
android:name=".service.RouterService"
android:icon="@drawable/ic_launcher_itoopie"
android:enabled="true"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="net.i2p.android.router.service.IRouterState" />
@ -35,7 +37,9 @@
<provider
android:name=".provider.CacheProvider"
android:authorities="${applicationId}.provider" />
<receiver android:name=".receiver.OnBootReceiver">
<receiver
android:name=".receiver.OnBootReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
@ -45,7 +49,8 @@
android:name="net.i2p.android.I2PActivity"
android:icon="@drawable/ic_launcher_itoopie"
android:label="@string/app_name"
android:launchMode="singleTop">
android:launchMode="singleTop"
android:exported="true">
<!-- Console filters -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -109,6 +114,7 @@
<activity
android:name=".web.WebActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="true"
android:label="I2P Web Browser">
<!-- Disabled, this browser is not very secure
Temporarily enabled until an alternative browser is ready -->

View File

@ -102,8 +102,28 @@ public class BrowserListFragment extends Fragment implements
getContext().getResources().getStringArray(R.array.supported_browsers));
supportedLabels = Arrays.asList(
getContext().getResources().getStringArray(R.array.supported_browser_labels));
unsupported = Arrays.asList(
context.getResources().getStringArray(R.array.unsupported_browsers));
unsupported = allBrowsers(context);//Arrays.asList(
//context.getResources().getStringArray(R.array.unsupported_browsers));
}
public List<String> allBrowsers(Context context){
//try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
List<ResolveInfo> browserList;
PackageManager pm = context.getPackageManager();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
// gets all
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_ALL);
} else {
browserList = pm.queryIntentActivities(intent, 0);
}
//}catch()
List<String> finalResult = new ArrayList<String>();
for (ResolveInfo ri : browserList){
finalResult.add(ri.resolvePackageName);
}
return finalResult;
}
@Override

View File

@ -94,10 +94,20 @@ public class AndroidSAMSecureSession extends AppCompatActivity implements SAMSec
bundle.putBoolean("approveSAMConnection", true);
bundle.putString("ID", clientId);
intent.putExtras(bundle);
PendingIntent pendingIntent = PendingIntent.getActivity(
mCtx, 7656,
intent,
PendingIntent.FLAG_UPDATE_CURRENT, bundle);
PendingIntent pendingIntent;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
pendingIntent = PendingIntent.getActivity(
mCtx, 7656,
intent,
PendingIntent.FLAG_MUTABLE,
bundle);
} else {
pendingIntent = PendingIntent.getActivity(
mCtx, 7656,
intent,
PendingIntent.FLAG_UPDATE_CURRENT,
bundle);
}
String dlgText = mCtx.getString(R.string.settings_confirm_sam) + "\n";//""</br>";
dlgText += mCtx.getString(R.string.settings_confirm_sam_id) + clientId + "\n";//""</br>";
dlgText += mCtx.getString(R.string.settings_confirm_allow_sam) + "\n";//""</br>";

View File

@ -71,7 +71,18 @@ class StatusBar {
private PendingIntent pendingIntent() {
Intent intent = new Intent(mCtx, I2PActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pi = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
pi = PendingIntent.getActivity(mCtx,
0,
intent,
PendingIntent.FLAG_MUTABLE);
} else {
pi = PendingIntent.getActivity(mCtx,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT);
}
return pi;
}

View File

@ -53,7 +53,12 @@ public class Notifications {
if (c != null) {
Intent intent = new Intent(mCtx, c);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pi;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_MUTABLE);
} else {
pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
b.setContentIntent(pi);
}

View File

@ -0,0 +1,17 @@
<html>
<head></head>
<body>
<h2>Privacy Brower has native I2P support!</h2>
<p>Make sure your I2P router is started before launching Privacy Browser</p>
<p>Privacy Browser supports both I2P and Orbot (Tor), but not at the same time.</p>
<h2>How to configure Privacy Browser:</h2>
<ol>
<li>Open the main menu and tap “Settings”</li>
<li>Select "Disable Javascript"(Recommended)</li>
<li>Select "Enable Incognito Mode"(Optional)</li>
<li>Tap the "Proxy" menu item and select "I2P" from the submenu</li>
<li>Exit the settings menu.</li>
</ol>
<a href="https://eyedeekay.github.io/Configuring-Privacy-Browser-for-I2P-on-Android/">A detailed guide with screenshots to is available online</a>
</body>
</html>

View File

@ -109,28 +109,25 @@
</string-array>
<string-array name="recommended_browsers">
<item>acr.browser.lightning</item>
<item>io.github.forkmaintainers.iceraven</item>
<item>com.stoutner.privacybrowser.standard</item>
</string-array>
<string-array name="recommended_browser_labels">
<item>Lightning</item>
<item>IceRaven(With Extension)</item>
<item>Privacy Browser</item>
</string-array>
<string-array name="supported_browsers">
<item>org.mozilla.firefox</item>
<item>org.mozilla.fennec_fdroid</item>
<item>org.gnu.icecat</item>
</string-array>
<string-array name="supported_browser_labels">
<item>Firefox</item>
<item>Fennec F-Droid</item>
<item>IceCatMobile</item>
</string-array>
<string-array name="unsupported_browsers">
<item>org.mozilla.firefox</item>
<item>com.android.chrome</item>
<item>com.brave.browser</item>
<item>com.android.browser</item>
<item>com.sec.android.app.sbrowser</item>
<item>com.stoutner.privacybrowser.standard</item>
<item>org.gnu.icecat</item>
<item>info.guardianproject.browser</item>
<item>mobi.mgeek.TunnyBrowser</item>
<item>com.lastpass.lpandroid</item>

View File

@ -15,7 +15,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'com.android.tools.lint:lint-gradle:26.1.1'
}
}

View File

@ -14,8 +14,8 @@ POM_DEVELOPER_ID=idk
POM_DEVELOPER_NAME=idk
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
ANDROID_BUILD_TARGET_SDK_VERSION=30
ANDROID_BUILD_SDK_VERSION=28
ANDROID_BUILD_TARGET_SDK_VERSION=31
ANDROID_BUILD_SDK_VERSION=31
I2P_VERSION=1.9.0-1
I2P_ANDROID_VERSION=1.9.0
I2P_VERSION=2.0.0
I2P_ANDROID_VERSION=2.0.1

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

View File

@ -9,7 +9,7 @@ repositories {
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
defaultConfig {
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
}
buildTypes {
@ -19,13 +19,17 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
buildToolsVersion '28.0.3'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
dependencies {

View File

@ -5,7 +5,7 @@ version = '0.9.5'
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
defaultConfig {
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
}
buildTypes {
@ -15,13 +15,13 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
buildToolsVersion '28.0.3'
}
dependencies {
@ -33,4 +33,8 @@ dependencies {
testImplementation 'org.mockito:mockito-core:2.11.0'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
apply from: "${project.rootDir}/gradle/maven-push.gradle"