package com.athena.asm.util; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class MyDatabase extends SQLiteAssetHelper { private static final String DATABASE_NAME = "qqwry"; private static final int DATABASE_VERSION = 6; // updated to 2015-01-10 public MyDatabase(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // you can use an alternate constructor to specify a database location // (such as a folder on the sd card) // you must ensure that this folder is available and you have permission // to write to it //super(context, DATABASE_NAME, context.getExternalFilesDir(null).getAbsolutePath(), null, DATABASE_VERSION); setForcedUpgradeVersion(DATABASE_VERSION); // Log.d("GEODatabase", String.format("IP=166.111.8.28 GEO=%s", getLocation("166.111.8.1"))); // Log.d("GEODatabase", String.format("IP=59.66.211.1 GEO=%s", getLocation("59.66.211.1"))); } private String Dot2LongIP(String dottedIP) { dottedIP = dottedIP.replace('*', '1'); String[] addrArray = dottedIP.split("\\."); long int_max = 2147483647; long num = 0; for (int i = 0; i < addrArray.length; i++) { int power = 3 - i; num += ((Integer.parseInt(addrArray[i]) % 256) * Math.pow(256, power)); } if (num < int_max) { return String.valueOf(num); } else { return String.valueOf(num - int_max - int_max - 2); } } public String getLocation(String dottedIP) { String intIP = Dot2LongIP(dottedIP); SQLiteDatabase db = getReadableDatabase(); Cursor result=db.rawQuery("select ip,country from qqwry where ip< " + intIP + " order by ip desc limit 1", null); result.moveToFirst(); String country = result.getString(1); result.close(); return country; } }