Merge branch 'master' of https://github.com/jonatkins/ingress-intel-total-conversion
This commit is contained in:
commit
9754af9e67
@ -161,6 +161,11 @@ window.runOnSmartphonesAfterBoot = function() {
|
||||
});
|
||||
});
|
||||
|
||||
if(typeof android !== 'undefined' && android && android.setPermalink) {
|
||||
window.map.on('moveend', window.setAndroidPermalink);
|
||||
addHook('portalSelected', window.setAndroidPermalink);
|
||||
}
|
||||
|
||||
// Force lower render limits for mobile
|
||||
window.VIEWPORT_PAD_RATIO = 0.1;
|
||||
window.MAX_DRAWN_PORTALS = 500;
|
||||
@ -168,6 +173,24 @@ window.runOnSmartphonesAfterBoot = function() {
|
||||
window.MAX_DRAWN_FIELDS = 100;
|
||||
}
|
||||
|
||||
window.setAndroidPermalink = function() {
|
||||
var c = window.map.getCenter();
|
||||
var lat = Math.round(c.lat*1E6)/1E6;
|
||||
var lng = Math.round(c.lng*1E6)/1E6;
|
||||
|
||||
var href = '/intel?ll='+lat+','+lng+'&z=' + map.getZoom();
|
||||
|
||||
if(window.selectedPortal && window.portals[window.selectedPortal]) {
|
||||
var p = window.portals[window.selectedPortal].getLatLng();
|
||||
lat = Math.round(p.lat*1E6)/1E6;
|
||||
lng = Math.round(p.lng*1E6)/1E6;
|
||||
href += '&pll='+lat+','+lng;
|
||||
}
|
||||
|
||||
href = $('<a>').prop('href', href).prop('href'); // to get absolute URI
|
||||
android.setPermalink(href);
|
||||
}
|
||||
|
||||
window.useAndroidPanes = function() {
|
||||
// isSmartphone is important to disable panes in desktop mode
|
||||
return (typeof android !== 'undefined' && android && android.addPane && window.isSmartphone());
|
||||
|
@ -16,6 +16,7 @@
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.NFC"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
|
||||
<application
|
||||
@ -46,6 +47,7 @@
|
||||
<!-- Handles the implicit intent to VIEW the www.ingress.com/intel URI -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.BROWSABLE"/>
|
||||
|
@ -17,14 +17,15 @@ public class IITC_JSInterface {
|
||||
// context of main activity
|
||||
private final IITC_Mobile mIitc;
|
||||
|
||||
IITC_JSInterface(IITC_Mobile iitc) {
|
||||
IITC_JSInterface(final IITC_Mobile iitc) {
|
||||
mIitc = iitc;
|
||||
}
|
||||
|
||||
// open dialog to send geo intent for navigation apps like gmaps or waze etc...
|
||||
@JavascriptInterface
|
||||
public void intentPosLink(double lat, double lng, int zoom, String title, boolean isPortal) {
|
||||
Intent intent = new Intent(mIitc, ShareActivity.class);
|
||||
public void intentPosLink(
|
||||
final double lat, final double lng, final int zoom, final String title, final boolean isPortal) {
|
||||
final Intent intent = new Intent(mIitc, ShareActivity.class);
|
||||
intent.putExtra("lat", lat);
|
||||
intent.putExtra("lng", lng);
|
||||
intent.putExtra("zoom", zoom);
|
||||
@ -35,8 +36,8 @@ public class IITC_JSInterface {
|
||||
|
||||
// share a string to the IITC share activity. only uses the share tab.
|
||||
@JavascriptInterface
|
||||
public void shareString(String str) {
|
||||
Intent intent = new Intent(mIitc, ShareActivity.class);
|
||||
public void shareString(final String str) {
|
||||
final Intent intent = new Intent(mIitc, ShareActivity.class);
|
||||
intent.putExtra("shareString", str);
|
||||
intent.putExtra("onlyShare", true);
|
||||
mIitc.startActivity(intent);
|
||||
@ -45,16 +46,15 @@ public class IITC_JSInterface {
|
||||
// disable javascript injection while spinner is enabled
|
||||
// prevent the spinner from closing automatically
|
||||
@JavascriptInterface
|
||||
public void spinnerEnabled(boolean en) {
|
||||
public void spinnerEnabled(final boolean en) {
|
||||
mIitc.getWebView().disableJS(en);
|
||||
}
|
||||
|
||||
// copy link to specific portal to android clipboard
|
||||
@JavascriptInterface
|
||||
public void copy(String s) {
|
||||
ClipboardManager clipboard = (ClipboardManager) mIitc
|
||||
.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
ClipData clip = ClipData.newPlainText("Copied Text ", s);
|
||||
public void copy(final String s) {
|
||||
final ClipboardManager clipboard = (ClipboardManager) mIitc.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
final ClipData clip = ClipData.newPlainText("Copied Text ", s);
|
||||
clipboard.setPrimaryClip(clip);
|
||||
Toast.makeText(mIitc, "copied to clipboard", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
@ -63,10 +63,9 @@ public class IITC_JSInterface {
|
||||
public int getVersionCode() {
|
||||
int versionCode = 0;
|
||||
try {
|
||||
PackageInfo pInfo = mIitc.getPackageManager()
|
||||
.getPackageInfo(mIitc.getPackageName(), 0);
|
||||
final PackageInfo pInfo = mIitc.getPackageManager().getPackageInfo(mIitc.getPackageName(), 0);
|
||||
versionCode = pInfo.versionCode;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
} catch (final PackageManager.NameNotFoundException e) {
|
||||
Log.w(e);
|
||||
}
|
||||
return versionCode;
|
||||
@ -75,11 +74,11 @@ public class IITC_JSInterface {
|
||||
@JavascriptInterface
|
||||
public String getVersionName() {
|
||||
String buildVersion = "unknown";
|
||||
PackageManager pm = mIitc.getPackageManager();
|
||||
final PackageManager pm = mIitc.getPackageManager();
|
||||
try {
|
||||
PackageInfo info = pm.getPackageInfo(mIitc.getPackageName(), 0);
|
||||
final PackageInfo info = pm.getPackageInfo(mIitc.getPackageName(), 0);
|
||||
buildVersion = info.versionName;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
} catch (final PackageManager.NameNotFoundException e) {
|
||||
Log.w(e);
|
||||
}
|
||||
return buildVersion;
|
||||
@ -93,7 +92,7 @@ public class IITC_JSInterface {
|
||||
Pane pane;
|
||||
try {
|
||||
pane = mIitc.getNavigationHelper().getPane(id);
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (final IllegalArgumentException e) {
|
||||
pane = Pane.MAP;
|
||||
}
|
||||
|
||||
@ -103,12 +102,12 @@ public class IITC_JSInterface {
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public void dialogFocused(String id) {
|
||||
public void dialogFocused(final String id) {
|
||||
mIitc.setFocusedDialog(id);
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public void dialogOpened(String id, boolean open) {
|
||||
public void dialogOpened(final String id, final boolean open) {
|
||||
mIitc.dialogOpened(id, open);
|
||||
}
|
||||
|
||||
@ -190,9 +189,9 @@ public class IITC_JSInterface {
|
||||
|
||||
@JavascriptInterface
|
||||
public boolean showZoom() {
|
||||
PackageManager pm = mIitc.getPackageManager();
|
||||
boolean hasMultitouch = pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);
|
||||
boolean forcedZoom = mIitc.getPrefs().getBoolean("pref_user_zoom", false);
|
||||
final PackageManager pm = mIitc.getPackageManager();
|
||||
final boolean hasMultitouch = pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);
|
||||
final boolean forcedZoom = mIitc.getPrefs().getBoolean("pref_user_zoom", false);
|
||||
return forcedZoom || !hasMultitouch;
|
||||
}
|
||||
|
||||
@ -228,4 +227,9 @@ public class IITC_JSInterface {
|
||||
public String getFileRequestUrlPrefix() {
|
||||
return mIitc.getFileManager().getFileRequestPrefix();
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public void setPermalink(final String href) {
|
||||
mIitc.setPermalink(href);
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,10 @@ import android.content.SharedPreferences;
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||
import android.content.res.Configuration;
|
||||
import android.net.Uri;
|
||||
import android.nfc.NdefMessage;
|
||||
import android.nfc.NdefRecord;
|
||||
import android.nfc.NfcAdapter;
|
||||
import android.nfc.NfcEvent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
@ -44,7 +48,8 @@ import java.net.URISyntaxException;
|
||||
import java.util.Stack;
|
||||
import java.util.Vector;
|
||||
|
||||
public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeListener {
|
||||
public class IITC_Mobile extends Activity
|
||||
implements OnSharedPreferenceChangeListener, NfcAdapter.CreateNdefMessageCallback {
|
||||
private static final String mIntelUrl = "https://www.ingress.com/intel";
|
||||
|
||||
private SharedPreferences mSharedPrefs;
|
||||
@ -68,6 +73,7 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis
|
||||
private boolean mIsLoading = true;
|
||||
private boolean mShowMapInDebug = false;
|
||||
private final Stack<String> mDialogStack = new Stack<String>();
|
||||
private String mPermalink = null;
|
||||
|
||||
// Used for custom back stack handling
|
||||
private final Stack<Pane> mBackStack = new Stack<IITC_NavigationHelper.Pane>();
|
||||
@ -142,6 +148,9 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis
|
||||
// afterwards install iitc update
|
||||
registerReceiver(mBroadcastReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
|
||||
|
||||
final NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
|
||||
if (nfc != null) nfc.setNdefPushMessageCallback(this, this);
|
||||
|
||||
handleIntent(getIntent(), true);
|
||||
}
|
||||
|
||||
@ -187,7 +196,7 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis
|
||||
private void handleIntent(final Intent intent, final boolean onCreate) {
|
||||
// load new iitc web view with ingress intel page
|
||||
final String action = intent.getAction();
|
||||
if (Intent.ACTION_VIEW.equals(action)) {
|
||||
if (Intent.ACTION_VIEW.equals(action) || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
|
||||
final Uri uri = intent.getData();
|
||||
Log.d("intent received url: " + uri.toString());
|
||||
|
||||
@ -777,4 +786,24 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis
|
||||
public interface ResponseHandler {
|
||||
void onActivityResult(int resultCode, Intent data);
|
||||
}
|
||||
|
||||
public void setPermalink(final String href) {
|
||||
mPermalink = href;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NdefMessage createNdefMessage(final NfcEvent event) {
|
||||
NdefRecord[] records;
|
||||
if (mPermalink == null) { // no permalink yet, just provide AAR
|
||||
records = new NdefRecord[] {
|
||||
NdefRecord.createApplicationRecord(getPackageName())
|
||||
};
|
||||
} else {
|
||||
records = new NdefRecord[] {
|
||||
NdefRecord.createUri(mPermalink),
|
||||
NdefRecord.createApplicationRecord(getPackageName())
|
||||
};
|
||||
}
|
||||
return new NdefMessage(records);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user