Google Map APIでapkを作成しました。 MainActivityには2つのボタンがあります。最初に私の場所をGoogleマップに表示し、緯度と経度をSQLiteデータベースに保存します。 2番目のボタンはGoogleマップを開き、データベースからすべての場所が読み込まれます(以前は自分の場所を確認した場所です)。MapActivityでのデータベース処理
2つのMainActivityボタンが同じMapActivityを起動しているが、フラグが異なるようにアプリケーションを作成しました。 onMapReadyメソッドでは、どのボタンが呼び出されているかを知るためにフラグをchceckingするIf文を使用しました。私はこの
locale = Locale.getDefault();
SQLiteDatabase mDatabase = openOrCreateDatabase("geoLoc", SQLiteDatabase.CREATE_IF_NECESSARY, null);
mDatabase.setLocale(locale);
String CREATE_LL_TABLE = "CREATE TABLE IF NOT EXISTS latlon (lat DOUBLE, lon DOUBLE);";
mDatabase.execSQL(CREATE_LL_TABLE);
エラーで、私の場所は正常に動作しますが、私はすべての私の場所のアプリケーションのクラッシュを確認したい時に示して一部のようなデータベースを作成している私のMainActivityさんのonCreate()Methodeの中
public void onMapReady(GoogleMap googleMap) {
if ((ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED ||
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {
mMap = googleMap;
if (getIntent().getFlags() == 1){
MarkerOptions options = new MarkerOptions();
LatLng llList;
ArrayList<LatLng> resultList = new ArrayList<LatLng>();
SQLiteDatabase mDatabase = openOrCreateDatabase("geoLoc", SQLiteDatabase.OPEN_READWRITE, null);
mDatabase.setLocale(Locale.getDefault());
String columns[] = {"lat", "lon"};
Cursor c = mDatabase.query("latlon", columns, null, null, null, null, "result DESC");
while (c.moveToNext())
{
Double lat = c.getDouble(c.getColumnIndex("lat"));
Double lng = c.getDouble(c.getColumnIndex("lon"));
try
{
llList = new LatLng(lat,lng);
resultList.add(llList);
}
catch (Exception e) {
}
}
for (LatLng point : resultList) {
options.position(point);
options.title(point.latitude + " " + point.longitude);
mMap.addMarker(options);
}
LatLng center= new LatLng(11,11);
mMap.moveCamera(CameraUpdateFactory.newLatLng(center));
}
else{
mDatabase = openOrCreateDatabase("geoLoc", SQLiteDatabase.CREATE_IF_NECESSARY, null);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
double lat = location.getLatitude();
double lng = location.getLongitude();
// Saving to DB
ContentValues values = new ContentValues();
values.put("lat", lat);
values.put("lon", lng);
long newAuthorID = mDatabase.insert("latlon", null, values);
mMap.setMyLocationEnabled(true);
// Add a marker in Sydney and move the camera
LatLng place = new LatLng(lat,lng);
mMap.addMarker(new MarkerOptions().position(place).title("Your location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(place));
}
}
}
メッセージ。
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such column: result (code 1): , while compiling: SELECT lat, lon FROM latlon ORDER BY result DESC)
#################################################################
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:996)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:561)
11at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1471)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1318)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1357)
at com.example.lukasz.aaaaa.MapsActivity.onMapReady(MapsActivity.java:75)
at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source)
at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:387)
at gl.b(:[email protected]:20)
at com.google.android.gms.maps.internal.bf.a(:[email protected]:5)
at com.google.maps.api.android.lib6.impl.bc.run(:[email protected]:5)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
W ActivityManager: Force finishing activity com.example.lukasz.aaaaa/.MapsActivity
データベースのロックが原因ですか。