mirror of
https://github.com/emanuele-f/PCAPdroid.git
synced 2026-05-08 21:12:26 +00:00
Fix paid features unlocking in beta builds
Paid features inherited from the official app were not properly unlocked when the VPN was started by the Android system Fixes #255
This commit is contained in:
@@ -42,12 +42,14 @@ import java.security.spec.X509EncodedKeySpec;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/* Billing stub */
|
||||
public class Billing {
|
||||
private static final String TAG = "Billing";
|
||||
private static final String KEY = "ME4wEAYHKoZIzj0CAQYFK4EEACEDOgAE6cS1N1P0kaiuxq0g70OVVE0uIOD+t809" +
|
||||
"Etg3k2h11k8uNvfkx3mL1HTjQyzSfdueyY4DqTW7+sk=";
|
||||
private static final String PEER_SKU_KEY = "peer_skus";
|
||||
|
||||
// SKUs
|
||||
public static final String SUPPORTER_SKU = "pcapdroid_supporter";
|
||||
@@ -79,6 +81,11 @@ public class Billing {
|
||||
protected Billing(Context ctx) {
|
||||
mContext = ctx;
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
|
||||
|
||||
// Load peer skus
|
||||
Set<String> peer_skus = mPrefs.getStringSet(PEER_SKU_KEY, null);
|
||||
if(peer_skus != null)
|
||||
mPeerSkus.addAll(peer_skus);
|
||||
}
|
||||
|
||||
public static Billing newInstance(Context ctx) {
|
||||
@@ -198,7 +205,21 @@ public class Billing {
|
||||
return !Prefs.isRootCaptureEnabled(mPrefs);
|
||||
}
|
||||
|
||||
public void addPeerSku(String sku) {
|
||||
mPeerSkus.add(sku);
|
||||
public void handlePeerSkus(Set<String> skus) {
|
||||
if(skus.equals(mPeerSkus))
|
||||
return; // nothing changed
|
||||
|
||||
mPeerSkus.clear();
|
||||
mPeerSkus.addAll(skus);
|
||||
|
||||
Log.i(TAG, "Peer skus updated: " + skus);
|
||||
|
||||
mPrefs.edit()
|
||||
.putStringSet(PEER_SKU_KEY, mPeerSkus)
|
||||
.apply();
|
||||
}
|
||||
|
||||
public void clearPeerSkus() {
|
||||
handlePeerSkus(new HashSet<>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,12 +318,14 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
AppDescriptor peer = AppsResolver.resolve(getPackageManager(), peerAppPackage, 0);
|
||||
if(peer == null) {
|
||||
Log.d(TAG, "Peer app not found");
|
||||
mIab.clearPeerSkus();
|
||||
return;
|
||||
}
|
||||
|
||||
PackageInfo pInfo = peer.getPackageInfo();
|
||||
if((pInfo == null) || (PackageInfoCompat.getLongVersionCode(pInfo) < 56)) {
|
||||
Log.d(TAG, "Unsupported peer app version found");
|
||||
mIab.clearPeerSkus();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -331,6 +333,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
Utils.BuildType buildType = Utils.getVerifiedBuild(this, peerAppPackage);
|
||||
if((buildType != Utils.BuildType.FDROID) && (buildType != Utils.BuildType.PLAYSTORE) && (buildType != Utils.BuildType.GITHUB)) {
|
||||
Log.d(TAG, "Unsupported peer app build: " + buildType.name());
|
||||
mIab.clearPeerSkus();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -343,6 +346,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
peerInfoLauncher.launch(intent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Log.d(TAG, "Peer app launch failed");
|
||||
mIab.clearPeerSkus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,10 +361,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
if(skus != null) {
|
||||
Log.d(TAG, "Found peer app info");
|
||||
|
||||
for(String sku: skus) {
|
||||
Log.d(TAG, "Peer sku: " + sku);
|
||||
mIab.addPeerSku(sku);
|
||||
}
|
||||
mIab.handlePeerSkus(skus);
|
||||
|
||||
// success
|
||||
return;
|
||||
@@ -370,6 +371,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
// fail
|
||||
Log.d(TAG, "Invalid peer app result");
|
||||
mIab.clearPeerSkus();
|
||||
}
|
||||
|
||||
private static class MainStateAdapter extends FragmentStateAdapter {
|
||||
|
||||
+1
-1
Submodule submodules/zdtun updated: 3ac3633dc6...9f59c56022
Reference in New Issue
Block a user