Added advertisements

This commit is contained in:
M66B 2016-07-24 18:02:56 +02:00
parent 616ba89d1a
commit f5014c34d0
14 changed files with 248 additions and 15 deletions

View File

@ -42,6 +42,12 @@
<sourceFolder url="file://$MODULE_DIR$/src/lollipopDebug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/lollipopDebug/renderscript" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/lollipopDebug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/lollipop/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/lollipop/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testLollipopDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testLollipopDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testLollipopDebug/assets" type="java-test-resource" />
@ -50,12 +56,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testLollipopDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testLollipopDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testLollipopDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/lollipop/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/lollipop/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/lollipop/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/lollipop/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/lollipop/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/lollipop/assets" type="java-resource" />
@ -104,14 +104,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/renderscript" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/renderscript" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
@ -120,6 +112,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/renderscript" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/renderscript" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/binaries" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
@ -131,6 +131,19 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/24.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/24.1.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-ads-lite/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-ads/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-base/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-basement/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-clearcut/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-gass/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-tasks/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-ads/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-analytics-impl/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-analytics/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-common/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-core/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-iid/9.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
@ -152,9 +165,22 @@
<orderEntry type="library" exported="" name="recyclerview-v7-24.1.1" level="project" />
<orderEntry type="library" exported="" name="support-v4-24.1.1" level="project" />
<orderEntry type="library" exported="" name="picasso-2.5.2" level="project" />
<orderEntry type="library" exported="" name="play-services-base-9.2.1" level="project" />
<orderEntry type="library" exported="" name="play-services-gass-9.2.1" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-24.1.1" level="project" />
<orderEntry type="library" exported="" name="play-services-clearcut-9.2.1" level="project" />
<orderEntry type="library" exported="" name="play-services-basement-9.2.1" level="project" />
<orderEntry type="library" exported="" name="play-services-tasks-9.2.1" level="project" />
<orderEntry type="library" exported="" name="support-annotations-24.1.1" level="project" />
<orderEntry type="library" exported="" name="animated-vector-drawable-24.1.1" level="project" />
<orderEntry type="library" exported="" name="support-vector-drawable-24.1.1" level="project" />
<orderEntry type="library" exported="" name="firebase-analytics-impl-9.2.1" level="project" />
<orderEntry type="library" exported="" name="firebase-core-9.2.1" level="project" />
<orderEntry type="library" exported="" name="play-services-ads-9.2.1" level="project" />
<orderEntry type="library" exported="" name="firebase-common-9.2.1" level="project" />
<orderEntry type="library" exported="" name="play-services-ads-lite-9.2.1" level="project" />
<orderEntry type="library" exported="" name="firebase-analytics-9.2.1" level="project" />
<orderEntry type="library" exported="" name="firebase-iid-9.2.1" level="project" />
<orderEntry type="library" exported="" name="firebase-ads-9.2.1" level="project" />
</component>
</module>

View File

@ -78,4 +78,8 @@ dependencies {
compile 'com.android.support:appcompat-v7:24.+'
compile 'com.android.support:recyclerview-v7:24.+'
compile 'com.squareup.picasso:picasso:2.5.+'
compile 'com.google.firebase:firebase-core:9.2.+'
compile 'com.google.firebase:firebase-ads:9.2.+'
}
apply plugin: 'com.google.gms.google-services'

42
app/google-services.json Normal file
View File

@ -0,0 +1,42 @@
{
"project_info": {
"project_number": "495063709670",
"firebase_url": "https://netguard-811a8.firebaseio.com",
"project_id": "netguard-811a8",
"storage_bucket": "netguard-811a8.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:495063709670:android:4a7add5044bbfbe4",
"android_client_info": {
"package_name": "eu.faircode.netguard"
}
},
"oauth_client": [
{
"client_id": "495063709670-kmrhdn2hl4hb0mhst1g41i30mn8tv4te.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAA9DsZbwqbneF65YtAwTqBRJtaChJMTd0"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}

View File

@ -49,3 +49,6 @@
#Picasso
-dontwarn com.squareup.okhttp.**
#AdMob
-dontwarn com.google.android.gms.internal.**

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="eu.faircode.netguard">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@ -13,6 +14,14 @@
<uses-permission android:name="android.permission.VIBRATE" />
<!-- http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous -->
<!-- Firebase -->
<uses-permission
android:name="com.google.android.c2dm.permission.RECEIVE"
tools:node="remove" />
<uses-permission
android:name="eu.faircode.netguard.permission.C2D_MESSAGE"
tools:node="remove" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="eu.faircode.netguard">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@ -12,6 +13,14 @@
<uses-permission android:name="android.permission.VIBRATE" />
<!-- http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous -->
<!-- Firebase -->
<uses-permission
android:name="com.google.android.c2dm.permission.RECEIVE"
tools:node="remove" />
<uses-permission
android:name="eu.faircode.netguard.permission.C2D_MESSAGE"
tools:node="remove" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />

View File

@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@ -63,6 +64,12 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;
import java.util.List;
public class ActivityMain extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@ -398,6 +405,11 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
}
// Ads
if (!IAB.isPurchasedAny(this))
loadAds();
// Handle intent
checkExtras(getIntent());
}
@ -416,6 +428,89 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.i(TAG, "Config changed");
super.onConfigurationChanged(newConfig);
if (!IAB.isPurchasedAny(this))
reloadAds();
}
private void loadAds() {
MobileAds.initialize(getApplicationContext(), getString(R.string.ad_app_id));
AdView adView = (AdView) findViewById(R.id.adView);
adView.setVisibility(View.VISIBLE);
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
Log.i(TAG, "Ad loaded");
}
@Override
public void onAdFailedToLoad(int errorCode) {
switch (errorCode) {
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
Log.w(TAG, "Ad load error=INTERNAL_ERROR");
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
Log.w(TAG, "Ad load error=INVALID_REQUEST");
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
Log.w(TAG, "Ad load error=NETWORK_ERROR");
break;
case AdRequest.ERROR_CODE_NO_FILL:
Log.w(TAG, "Ad load error=NO_FILL");
break;
default:
Log.w(TAG, "Ad load error=" + errorCode);
}
}
@Override
public void onAdOpened() {
Log.i(TAG, "Ad opened");
}
@Override
public void onAdClosed() {
Log.i(TAG, "Ad closed");
}
@Override
public void onAdLeftApplication() {
Log.i(TAG, "Ad left app");
}
});
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(getString(R.string.ad_test_device_id))
.build();
adView.loadAd(adRequest);
}
private void reloadAds() {
AdView adView = (AdView) findViewById(R.id.adView);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) adView.getLayoutParams();
LinearLayout parent = (LinearLayout) adView.getParent();
parent.removeView(adView);
adView.destroy();
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(getString(R.string.ad_banner_unit_id));
adView.setId(R.id.adView);
adView.setLayoutParams(params);
parent.addView(adView);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(getString(R.string.ad_test_device_id))
.build();
adView.loadAd(adRequest);
}
private void checkExtras(Intent intent) {
// Approve request
if (intent.hasExtra(EXTRA_APPROVE)) {

View File

@ -183,6 +183,17 @@ public class IAB implements ServiceConnection {
prefs.getBoolean(ActivityPro.SKU_DONATION, false));
}
public static boolean isPurchasedAny(Context context) {
if (Util.isDebuggable(context))
return true;
SharedPreferences prefs = context.getSharedPreferences("IAB", Context.MODE_PRIVATE);
for (String key : prefs.getAll().keySet())
if (prefs.getBoolean(key, false))
return true;
return false;
}
public static String getResult(int responseCode) {
switch (responseCode) {
case 0:

View File

@ -338,7 +338,16 @@ public class Rule {
rule.screen_other = screen_other.getBoolean(info.packageName, rule.screen_other_default);
rule.roaming = roaming.getBoolean(info.packageName, rule.roaming_default);
rule.apply = apply.getBoolean(info.packageName, true);
if (info.applicationInfo.uid == Process.myUid())
if (IAB.isPurchasedAny(context))
rule.apply = apply.getBoolean(info.packageName, true);
else {
rule.pkg = false;
rule.apply = false;
}
else
rule.apply = apply.getBoolean(info.packageName, true);
rule.notify = notify.getBoolean(info.packageName, true);
// Related packages

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -121,6 +122,14 @@
android:text="@android:string/ok"
android:textAppearance="@style/TextSmall" />
</LinearLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_banner_unit_id" />
</LinearLayout>
<View

View File

@ -329,6 +329,14 @@
android:text="@string/title_pro_details"
android:textAppearance="@style/TextMedium" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/title_pro_ads"
android:textAppearance="@style/TextMedium"
android:textStyle="italic" />
<LinearLayout
android:id="@+id/llChallenge"
android:layout_width="match_parent"

View File

@ -238,6 +238,7 @@ Your internet traffic is not being sent to a remote VPN server.</string>
<string name="title_pro_buy">Buy</string>
<string name="title_pro_bought">Enabled</string>
<string name="title_pro_details">Tap on a title for more information</string>
<string name="title_pro_ads">Buying any pro feature will disable all advertisements</string>
<string name="title_pro_challenge">Challenge</string>
<string name="title_pro_reponse">Response</string>
@ -285,5 +286,8 @@ Your internet traffic is not being sent to a remote VPN server.</string>
<item>6</item>
</string-array>
<string name="ad_app_id" translatable="false">ca-app-pub-6350249268625326~6636046697</string>
<string name="ad_banner_unit_id" translatable="false">ca-app-pub-6350249268625326/8112779894</string>
<string name="ad_test_device_id" translatable="false">B23E5E89C89F87C06C33861503174DFC</string>
<string name="fingerprint" translatable="false">ef46f813d2c8a064d72c936b9b96d1cccc989378</string>
</resources>

View File

@ -7,6 +7,7 @@ buildscript {
dependencies {
// http://tools.android.com/tech-docs/new-build-system/gradle-experimental
classpath 'com.android.tools.build:gradle-experimental:0.7.0'
classpath 'com.google.gms:google-services:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

3
tools/checkmanifests.sh Normal file
View File

@ -0,0 +1,3 @@
#!/bin/sh
#apt-get install meld
meld app/src/main/AndroidManifest.xml app/src/kitkat/AndroidManifest.xml &