Uygulamamda SearchManager ile uygulanan iki farklı Arama etkinliğim var. Biri tüm uygulama için varsayılan aranabilir ve diğeri sadece bir etkinlik için kullanılır. Bu iki arama farklı veri aramalarını gerçekleştirir ve arama geçmişini iki farklı aramada paylaşmak mantıklı değildir. İki farklı aranabilirlik, uygulama içinde işlevsel olarak iyi çalışıyor, benim sorunum son arama geçmişleriyle.Birden çok SearchRecentSuggestionsProvider sınıfları Android uygulamasında mümkün mü?
sorun uygulaması içinde tanımlanan iki farklı SearchRecentSuggestionsProvider sınıflar vardır, ama birinde yapılan herhangi bir arama hem aramalar son arama önerileri tarihte görülmesidir. Dev Kılavuz'da SearchManager konusunu okudum, ancak birden çok öneri sağlayıcıları hakkında hiçbir bilgi görmüyorum. İşte
düğümünde, AndroidManifest.xml iki sağlayıcılar şunlardır:package com.company;
import android.content.SearchRecentSuggestionsProvider;
public class SearchOneRecentSuggestionsProvider extends SearchRecentSuggestionsProvider {
public final static String AUTHORITY = "com.company.SearchOneRecentSuggestionsProvider";
public final static int MODE = DATABASE_MODE_QUERIES;
public SearchOneRecentSuggestionsProvider() {
setupSuggestions(AUTHORITY, MODE);
}
}
(SearchTwoRecentSuggestionsProvider sınıfı tamamen aynı görünüyor: Burada
<provider android:name=".SearchOneRecentSuggestionsProvider"
android:authorities="com.company.SearchOneRecentSuggestionsProvider"></provider>
<provider android:name=".SearchTwoRecentSuggestionsProvider"
android:authorities="com.company.SearchTwoRecentSuggestionsProvider"></provider>
SearchOneRecentSuggestionsProvider.java tanımlanan sınıf var Bir ile iki değiştirme ve kendi SearchTwoRecentSuggestionsProvider.java dosyasında olduğu dışında.)
İşte nedir (/data/data/com.company/databases/suggestions.db at) arama önerileri veritabanı içinde:
SearchRecentSuggestionsProvider için sütun var# sqlite3 suggestions.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
android_metadata suggestions
sqlite> .schema suggestions
CREATE TABLE suggestions (_id INTEGER PRIMARY KEY,display1 TEXT UNIQUE ON CONFLICT REPLACE,query TEXT,date LONG);
sqlite> select * from suggestions;
1|searchone|searchone|1296177852444
2|searchtwo|searchtwo|1296177878744
, belki iki aramalar için tarih ayırmak için hiçbir yolu yoktur ?
Tüm bunların sonucunda, iki farklı aramadan birinde arama yaptığınızda, hem arama yapabildiğinizi hem de son arama geçmişi önerilerinde arama yaptınız. Mümkünse her birinin kendi tarihine sahip olmasını istiyorum. Umarım sadece aptalca bir şey kaçırmadım! Bunu okumak için zaman ayırdığınız için teşekkürler.
Cevabınız için teşekkür ederiz, kaynak koduna da baktım ve db isminin kodlanmış olduğunu gördüm. Sadece basit bir şeyi kaçırdığımı umuyordum. Geçici çözüm önerilerinizi meslektaşlarımla tartışacağım ve bunun bizim için işe yarayıp yaramayacağını göreceğim. –
Sabit kodlanmış db adı nedir? –