diff --git a/vending-app/src/main/AndroidManifest.xml b/vending-app/src/main/AndroidManifest.xml
index e63b85803a..2b8bfc7cf8 100644
--- a/vending-app/src/main/AndroidManifest.xml
+++ b/vending-app/src/main/AndroidManifest.xml
@@ -10,7 +10,7 @@
android:protectionLevel="normal" />
-
+
@@ -20,6 +20,25 @@
android:name="android.permission.USE_CREDENTIALS"
android:maxSdkVersion="22" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -79,6 +99,7 @@
+
@@ -89,9 +110,11 @@
-
-
diff --git a/vending-app/src/main/java/org/microg/vending/MarketIntentRedirect.java b/vending-app/src/main/java/org/microg/vending/MarketIntentRedirect.java
index 31feff4a80..0892b3525a 100644
--- a/vending-app/src/main/java/org/microg/vending/MarketIntentRedirect.java
+++ b/vending-app/src/main/java/org/microg/vending/MarketIntentRedirect.java
@@ -7,6 +7,7 @@
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
@@ -32,6 +33,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
finish();
}
+ private boolean isNonSelfIntent(@NonNull Intent intent) {
+ ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, 0);
+ return resolveInfo != null && resolveInfo.activityInfo != null && !getPackageName().equals(resolveInfo.activityInfo.packageName);
+ }
+
private void processIntent(@NonNull Intent intent) {
Log.d(TAG, "Received " + intent);
Intent newIntent = new Intent(intent);
@@ -39,9 +45,11 @@ private void processIntent(@NonNull Intent intent) {
newIntent.setComponent(null);
if ("market".equals(newIntent.getScheme())) {
try {
- Log.d(TAG, "Redirect to " + newIntent);
- startActivity(newIntent);
- return;
+ if (isNonSelfIntent(newIntent)) {
+ Log.d(TAG, "Redirect to " + newIntent);
+ startActivity(newIntent);
+ return;
+ }
} catch (Exception e) {
Log.w(TAG, e);
}
@@ -62,9 +70,11 @@ private void processIntent(@NonNull Intent intent) {
Log.d(TAG, "Rewrote as " + newIntent + " (" + newIntent.getDataString() + ")");
}
try {
- Log.d(TAG, "Redirect to " + newIntent);
- startActivity(newIntent);
- return;
+ if (isNonSelfIntent(newIntent)) {
+ Log.d(TAG, "Redirect to " + newIntent);
+ startActivity(newIntent);
+ return;
+ }
} catch (Exception e) {
Log.w(TAG, e);
Toast.makeText(this, "Unable to open", Toast.LENGTH_SHORT).show();