package org.fdroid.fdroid;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Build;
import android.util.Log;
public class NfcHelper {
private static final String TAG = "NfcHelper";
@TargetApi(14)
private static NfcAdapter getAdapter(Context context) {
if (Build.VERSION.SDK_INT < 14) {
return null;
}
return NfcAdapter.getDefaultAdapter(context.getApplicationContext());
}
@TargetApi(14)
public static boolean setPushMessage(Activity activity, Uri toShare) {
NfcAdapter adapter = getAdapter(activity);
if (adapter != null) {
adapter.setNdefPushMessage(new NdefMessage(new NdefRecord[]{
NdefRecord.createUri(toShare),
}), activity);
return true;
}
return false;
}
@TargetApi(16)
static void setAndroidBeam(Activity activity, String packageName) {
if (Build.VERSION.SDK_INT < 16) {
return;
}
PackageManager pm = activity.getPackageManager();
NfcAdapter nfcAdapter = getAdapter(activity);
if (nfcAdapter != null) {
ApplicationInfo appInfo;
try {
appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
Uri[] uris = {
Uri.parse("file://" + appInfo.publicSourceDir),
};
nfcAdapter.setBeamPushUris(uris, activity);
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Could not get application info", e);
}
}
}
@TargetApi(16)
static void disableAndroidBeam(Activity activity) {
if (Build.VERSION.SDK_INT < 16) {
return;
}
NfcAdapter nfcAdapter = getAdapter(activity);
if (nfcAdapter != null) {
nfcAdapter.setBeamPushUris(null, activity);
}
}
}