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();