move getSharingUri() to Utils for easier reuse

This method will also be used by the local repo for swapping.
This commit is contained in:
Hans-Christoph Steiner 2014-04-25 11:49:43 -04:00
parent 1018cad3b4
commit 527f649fc2
2 changed files with 26 additions and 26 deletions

View File

@ -19,23 +19,27 @@
package org.fdroid.fdroid; package org.fdroid.fdroid;
import android.content.Context; import android.content.Context;
import android.net.Uri;
import android.content.pm.PackageInfo; import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import com.nostra13.universalimageloader.utils.StorageUtils; import com.nostra13.universalimageloader.utils.StorageUtils;
import org.fdroid.fdroid.data.Repo;
import java.io.Closeable; import java.io.Closeable;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.InputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.cert.Certificate; import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateEncodingException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.security.MessageDigest;
import java.util.*; import java.util.*;
public final class Utils { public final class Utils {
@ -188,6 +192,22 @@ public final class Utils {
return displayFP; return displayFP;
} }
public static Uri getSharingUri(Context context, Repo repo) {
Uri uri = Uri.parse(repo.address.replaceFirst("http", "fdroidrepo"));
Uri.Builder b = uri.buildUpon();
b.appendQueryParameter("fingerprint", repo.fingerprint);
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID().replaceAll("^\"(.*)\"$", "$1");
String bssid = wifiInfo.getBSSID();
if (!TextUtils.isEmpty(bssid)) {
b.appendQueryParameter("bssid", Uri.encode(bssid));
if (!TextUtils.isEmpty(ssid))
b.appendQueryParameter("ssid", Uri.encode(ssid));
}
return b.build();
}
public static File getApkCacheDir(Context context) { public static File getApkCacheDir(Context context) {
File apkCacheDir = new File( File apkCacheDir = new File(
StorageUtils.getCacheDirectory(context, true), "apks"); StorageUtils.getCacheDirectory(context, true), "apks");

View File

@ -4,8 +4,6 @@ package org.fdroid.fdroid.views;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.nfc.NdefMessage; import android.nfc.NdefMessage;
import android.nfc.NdefRecord; import android.nfc.NdefRecord;
import android.nfc.NfcAdapter; import android.nfc.NfcAdapter;
@ -13,12 +11,12 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.compat.ActionBarCompat; import org.fdroid.fdroid.compat.ActionBarCompat;
import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.data.RepoProvider;
@ -27,7 +25,6 @@ import org.fdroid.fdroid.views.fragments.RepoDetailsFragment;
public class RepoDetailsActivity extends FragmentActivity { public class RepoDetailsActivity extends FragmentActivity {
public static final String TAG = "RepoDetailsActivity"; public static final String TAG = "RepoDetailsActivity";
private WifiManager wifiManager;
private Repo repo; private Repo repo;
static final String MIME_TYPE = "application/vnd.org.fdroid.fdroid.repo"; static final String MIME_TYPE = "application/vnd.org.fdroid.fdroid.repo";
@ -67,8 +64,6 @@ public class RepoDetailsActivity extends FragmentActivity {
ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true); ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true);
setTitle(repo.getName()); setTitle(repo.getName());
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
} }
@TargetApi(14) @TargetApi(14)
@ -80,7 +75,7 @@ public class RepoDetailsActivity extends FragmentActivity {
return; return;
} }
nfcAdapter.setNdefPushMessage(new NdefMessage(new NdefRecord[] { nfcAdapter.setNdefPushMessage(new NdefMessage(new NdefRecord[] {
NdefRecord.createUri(getSharingUri()), NdefRecord.createUri(Utils.getSharingUri(this, repo)),
}), this); }), this);
findViewById(android.R.id.content).post(new Runnable() { findViewById(android.R.id.content).post(new Runnable() {
@Override @Override
@ -128,19 +123,4 @@ public class RepoDetailsActivity extends FragmentActivity {
finish(); finish();
} }
} }
protected Uri getSharingUri() {
Uri uri = Uri.parse(repo.address.replaceFirst("http", "fdroidrepo"));
Uri.Builder b = uri.buildUpon();
b.appendQueryParameter("fingerprint", repo.fingerprint);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID().replaceAll("^\"(.*)\"$", "$1");
String bssid = wifiInfo.getBSSID();
if (!TextUtils.isEmpty(bssid)) {
b.appendQueryParameter("bssid", Uri.encode(bssid));
if (!TextUtils.isEmpty(ssid))
b.appendQueryParameter("ssid", Uri.encode(ssid));
}
return b.build();
}
} }