Incoming swap URI's (from the web browser) go to correct place.
The
This commit is contained in:
		
							parent
							
								
									b0586384f8
								
							
						
					
					
						commit
						ddb9791e11
					
				| @ -105,15 +105,41 @@ | ||||
|                 <data android:pathPrefix="/repository/browse" /> | ||||
|             </intent-filter> | ||||
| 
 | ||||
|             <!-- | ||||
|             This intent serves two purposes: Swapping apps between devices and adding a | ||||
|             repo from a website (e.g. https://guardianproject.info/fdroid/repo). | ||||
|             We intercept both of these situations in the FDroid activity, and then redirect | ||||
|             to the appropriate handler (swap handling, manage repos respectively) from there. | ||||
| 
 | ||||
|             The reason for this is that the only differentiating factor is the presence | ||||
|             of a "swap=1" in the query string, and intent-filter is unable to deal with | ||||
|             query parameters. An alternative would be to do something like fdroidswap:// as | ||||
|             a scheme, but then we. Need to copy/paste all of this intent-filter stuff and | ||||
|             keep it up to date when it changes or a bug is found. | ||||
|             --> | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.intent.action.VIEW" /> | ||||
| 
 | ||||
|                 <category android:name="android.intent.category.BROWSABLE" /> | ||||
|                 <category android:name="android.intent.category.DEFAULT" /> | ||||
| 
 | ||||
|                 <!-- | ||||
|                 Android's scheme matcher is case-sensitive, so include | ||||
|                 ALL CAPS versions to support ALL CAPS URLs in QR Codes. | ||||
|                 QR Codes have a special ALL CAPS mode that uses a reduced | ||||
|                 character set, making for more compact QR Codes. | ||||
|                 --> | ||||
|                 <data android:scheme="http" /> | ||||
|                 <data android:scheme="HTTP" /> | ||||
|                 <data android:scheme="https" /> | ||||
|                 <data android:scheme="HTTPS" /> | ||||
|                 <data android:scheme="fdroidrepo" /> | ||||
|                 <data android:scheme="FDROIDREPO" /> | ||||
|                 <data android:scheme="fdroidrepos" /> | ||||
|                 <data android:scheme="FDROIDREPOS" /> | ||||
| 
 | ||||
|                 <data android:host="*" /> | ||||
| 
 | ||||
|                 <!-- | ||||
|                 The pattern matcher here is poorly implemented, in particular the * is | ||||
|                 non-greedy, so you have to do stupid tricks to match patterns that have | ||||
| @ -159,10 +185,6 @@ | ||||
|                 android:name="android.support.PARENT_ACTIVITY" | ||||
|                 android:value=".FDroid" /> | ||||
|         </activity> | ||||
|         <!-- | ||||
|         The title for ManageReposActivity is "F-Droid" here, but "Repositories" | ||||
|         when viewing the Activity itself in the app. | ||||
|         --> | ||||
|         <activity | ||||
|             android:name=".views.ManageReposActivity" | ||||
|             android:label="@string/app_name" | ||||
| @ -171,24 +193,6 @@ | ||||
|             <meta-data | ||||
|                 android:name="android.support.PARENT_ACTIVITY" | ||||
|                 android:value=".FDroid" /> | ||||
| 
 | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.intent.action.VIEW" /> | ||||
| 
 | ||||
|                 <category android:name="android.intent.category.BROWSABLE" /> | ||||
|                 <category android:name="android.intent.category.DEFAULT" /> | ||||
| 
 | ||||
|                 <!-- | ||||
|                 Android's scheme matcher is case-sensitive, so include | ||||
|                 ALL CAPS versions to support ALL CAPS URLs in QR Codes. | ||||
|                 QR Codes have a special ALL CAPS mode that uses a reduced | ||||
|                 character set, making for more compact QR Codes. | ||||
|                 --> | ||||
|                 <data android:scheme="fdroidrepo" /> | ||||
|                 <data android:scheme="FDROIDREPO" /> | ||||
|                 <data android:scheme="fdroidrepos" /> | ||||
|                 <data android:scheme="FDROIDREPOS" /> | ||||
|             </intent-filter> | ||||
|             <!-- Handle NFC tags detected from outside our application --> | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.nfc.action.NDEF_DISCOVERED" /> | ||||
|  | ||||
| @ -1,61 +0,0 @@ | ||||
| package org.fdroid.fdroid.compat; | ||||
| 
 | ||||
| import java.io.File; | ||||
| 
 | ||||
| import android.annotation.TargetApi; | ||||
| import android.content.Context; | ||||
| import android.os.Environment; | ||||
| 
 | ||||
| public abstract class ContextCompat extends Compatibility { | ||||
| 
 | ||||
|     public static ContextCompat create(Context context) { | ||||
|         if (hasApi(8)) { | ||||
|             return new FroyoContextCompatImpl(context); | ||||
|         } else { | ||||
|             return new OldContextCompatImpl(context); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     protected final Context context; | ||||
| 
 | ||||
|     public ContextCompat(Context context) { | ||||
|         this.context = context; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @see android.content.Context#getExternalCacheDir() | ||||
|      */ | ||||
|     public abstract File getExternalCacheDir(); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| class OldContextCompatImpl extends ContextCompat { | ||||
| 
 | ||||
|     public OldContextCompatImpl(Context context) { | ||||
|         super(context); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public File getExternalCacheDir() { | ||||
|         File file = new File(Environment.getExternalStorageDirectory(), | ||||
|                 "Android/data/org.fdroid.fdroid/cache"); | ||||
|         if (!file.exists()) | ||||
|             file.mkdirs(); | ||||
|         return file; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| @TargetApi(8) | ||||
| class FroyoContextCompatImpl extends ContextCompat { | ||||
| 
 | ||||
|     public FroyoContextCompatImpl(Context context) { | ||||
|         super(context); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public File getExternalCacheDir() { | ||||
|         return context.getExternalCacheDir(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -5,6 +5,7 @@ import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.net.Uri; | ||||
| import android.text.TextUtils; | ||||
| import android.util.Log; | ||||
| import org.fdroid.fdroid.R; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| @ -12,6 +13,8 @@ import java.util.Locale; | ||||
| 
 | ||||
| public class NewRepoConfig { | ||||
| 
 | ||||
|     private static final String TAG = "org.fdroid.fdroid.data.NewRepoConfig"; | ||||
| 
 | ||||
|     private String errorMessage; | ||||
|     private boolean isValidRepo = false; | ||||
| 
 | ||||
| @ -41,6 +44,8 @@ public class NewRepoConfig { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         Log.d(TAG, "Parsing incoming intent looking for repo: " + incomingUri); | ||||
| 
 | ||||
|         // scheme and host should only ever be pure ASCII aka Locale.ENGLISH | ||||
|         scheme = uri.getScheme(); | ||||
|         host = uri.getHost(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Peter Serwylo
						Peter Serwylo