Android中应该使用什么库和什么方法,从而获得类似于Java代码的搜索?
我在应用程序中实现搜索。我尝试实施第七个答案中提出的方案 我使用com_google_api_google_api_services_customsearch_v1_rev74_1_25_0.xml库Android中应该使用什么库和什么方法,从而获得类似于Java代码的搜索?,java,android,search,Java,Android,Search,我在应用程序中实现搜索。我尝试实施第七个答案中提出的方案 我使用com_google_api_google_api_services_customsearch_v1_rev74_1_25_0.xml库 import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.customsearch.Customsearch;
import
com.google.api.services.customsearch.CustomsearchRequestInitializer;
import com.google.api.services.customsearch.model.Result;
import com.google.api.services.customsearch.model.Search;
import java.io.IOException;
import java.security.GeneralSecurityException;
public class Main {
public static void main(String[] args) throws GeneralSecurityException,
IOException {
// String searchQuery = "test"; //The query to search
// String cx = "MyCx"; //Your search engine
String searchQuery = "test"; //The query to search
String cx = "MyCx"; //Your search engine
//Instance Customsearch
Customsearch cs= null;
try {
cs = new Customsearch.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), null)
.setApplicationName("MYApp")
.setGoogleClientRequestInitializer(new CustomsearchRequestInitializer("MyKey"))
.build();
System.out.println("cs= "+cs);
} catch (GeneralSecurityException e) {
System.out.println("GeneralSecurityException cs");
} catch (IOException e) {
System.out.println("IOException cs");
} catch (Exception e) {
System.out.println("Exception cs");
}
//Set search parameter
Customsearch.Cse.List list = null;
try {
list = cs.cse().list(searchQuery).setCx(cx);
System.out.println("list= "+list);
} catch (IOException e) {
System.out.println("IOException list");
}
//Execute search
Search result= null;
try {
result = list.execute();
} catch (IOException e) {
System.out.println("IOException result");
}
if (result!=null) { if (result.getItems()!=null){
for (Result ri : result.getItems()) {
//Get title, link, body etc. from search
System.out.println(ri.getTitle() + ", " + ri.getLink());
}
} else { System.out.println(" resultgetItems()= null"); }
} else { System.out.println(" result= null"); }
}
}
此代码在Android Studio中不起作用。问题已解决
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.StrictMode
import android.util.Log
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.*
import com.google.api.client.http.javanet.NetHttpTransport
import com.google.api.client.json.jackson2.JacksonFactory
import com.google.api.services.customsearch.Customsearch
import com.google.api.services.customsearch.CustomsearchRequestInitializer
import kotlinx.android.synthetic.main.activity_main.*
import java.io.IOException
import java.net.HttpURLConnection
import java.net.URL
class MainActivity : AppCompatActivity() {
val myCX = "myCX" //Your search engine
val myKey = "myKey"
val myApp = "myApp"
lateinit var cs : Customsearch
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder().permitAll().build())
if (isConnected())
Toast.makeText(applicationContext, "Инет Есть", Toast.LENGTH_SHORT).show()
else
Toast.makeText(applicationContext, "НЕТ Инет ", Toast.LENGTH_SHORT).show()
cs = Customsearch.Builder(NetHttpTransport(),
JacksonFactory.getDefaultInstance(), null)
.setApplicationName(myApp)
.setGoogleClientRequestInitializer(CustomsearchRequestInitializer(myKey))
.build()
}
fun onClick(view: View) {
// Спрятать клавиатуру
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(button.windowToken,InputMethodManager.HIDE_NOT_ALWAYS)
var TryText = editText.text.toString()
if (tryHttp(TryText)) { // сайт пингуется
Toast.makeText(applicationContext, "Сайт доступен",
Toast.LENGTH_SHORT).show()
TryText = editText.text.toString()
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(TryText)))
return
} else { // сайт НЕ пингуется
Toast.makeText(applicationContext, "Сайт НЕ доступен",
Toast.LENGTH_SHORT).show()
}
val searchQuery = editText.text.toString() //The query to search
Poisk(searchQuery)
}
fun isConnected(): Boolean {
val ni = (getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager)
.activeNetworkInfo
return ni != null && ni.isConnected
}
fun tryHttp(url: String): Boolean {
var url = url
url = url.toLowerCase().trim { it <= ' ' }
var url_temp = url
if (pingHttp(url_temp)) return true // Простая прямая проверка на то что ввели в
url
url_temp = url.replace("https://", "http://")
if (pingHttp(url_temp)) return true
url_temp = url.replace("http://", "https://")
if (pingHttp(url_temp)) return true
url_temp = url.replace("www.", "")
if (pingHttp(url_temp)) return true
if (url.startsWith("www.")) url_temp = "http://$url"
if (pingHttp(url_temp)) return true
if (url.startsWith("www.")) url_temp = "https://$url"
if (pingHttp(url_temp)) return true
if (url.startsWith("www.")) url_temp = url.replace("www.", "http://")
if (pingHttp(url_temp)) return true
if (url.startsWith("www.")) url_temp = url.replace("www.", "https://")
if (pingHttp(url_temp)) return true
if (!url.startsWith("http")) url_temp = "http://$url"
if (pingHttp(url_temp)) return true
if (!url.startsWith("http")) url_temp = "https://$url"
if (pingHttp(url_temp)) return true
return false
}
fun pingHttp(url: String): Boolean {
val httpConnection: HttpURLConnection
try {
httpConnection = URL(url).openConnection() as HttpURLConnection
httpConnection.requestMethod = "HEAD"
if (httpConnection.responseCode == 200) {
editText.setText(url)
// Toast.makeText(applicationContext, "Сайт доступен $url",
Toast.LENGTH_LONG).show()
return true
}
} catch (e: IOException) { }
// Toast.makeText(applicationContext, "САЙТ $url НЕ доступен",
Toast.LENGTH_SHORT).show()
return false
}
fun Poisk(searchQuery: String): Boolean {
try {
val list = cs.cse().list(searchQuery).setCx(myCX) //Set search parameter
val result = list.execute() //Execute search
if ((result != null) && (result.items != null)) { // Вывод результата
val rezList = ArrayList<String>(result.items.size)
result.items.forEach { ri -> rezList.add(ri.title) }
val adapter: ListAdapter = ArrayAdapter(this,
android.R.layout.simple_list_item_1, rezList)
listView.adapter = adapter
// добвляем для списка слушатель
listView.setOnItemClickListener { _, _, position, _ ->
// по позиции получаем выбранный элемент
val selectedItem = rezList[position]
Toast.makeText(applicationContext, "выбран $selectedItem" ,
Toast.LENGTH_SHORT).show()
Toast.makeText(applicationContext, "выбран \n
${result.items[position].link}" , Toast.LENGTH_LONG).show()
startActivity(Intent(Intent.ACTION_VIEW,
Uri.parse(result.items[position].link)))
}
return true
} else {
Log.d("AS1", "resultgetItems()= null")
Toast.makeText(applicationContext, "resultgetItems()= null",
Toast.LENGTH_SHORT).show()
}
} catch (e: Exception) {
Log.d("POISK", "Exception")
Toast.makeText(applicationContext, "POISK : Exception",
Toast.LENGTH_SHORT).show()
}
return false
}
}
导入android.content.Context
导入android.content.Intent
导入android.net.ConnectivityManager
导入android.net.Uri
导入androidx.appcompat.app.appcompat活动
导入android.os.Bundle
导入android.os.StrictMode
导入android.util.Log
导入android.view.view
导入android.view.inputmethod.InputMethodManager
导入android.widget*
导入com.google.api.client.http.javanet.NetHttpTransport
导入com.google.api.client.json.jackson2.JacksonFactory
导入com.google.api.services.customsearch.customsearch
导入com.google.api.services.customsearch.CustomsearchRequestInitializer
导入kotlinx.android.synthetic.main.activity\u main*
导入java.io.IOException
导入java.net.HttpURLConnection
导入java.net.URL
类MainActivity:AppCompatActivity(){
val myCX=“myCX”//您的搜索引擎
val myKey=“myKey”
val myApp=“myApp”
lateinit var cs:Customsearch
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder().permitAll().build())
如果(断开连接())
Toast.makeText(applicationContext,“ббббб”,Toast.LENGTH\u SHORT.show())
其他的
Toast.makeText(applicationContext,“ББМцц”,Toast.LENGTH\u SHORT.show())
cs=Customsearch.Builder(NetHttpTransport(),
JacksonFactory.getDefaultInstance(),null)
.setApplicationName(myApp)
.setGoogleClientRequestInitializer(CustomsearchRequestInitializer(myKey))
.build()
}
趣味onClick(视图:视图){
// Спрятать клавиатуру
val imm=getSystemService(Context.INPUT\u METHOD\u SERVICE)作为InputMethodManager
imm.hideSoftInputFromWindow(button.windowToken,InputMethodManager.HIDE\u不总是)
var TryText=editText.text.toString()
if(tryHttp(TryText)){//СаааПааааа
Toast.makeText(应用程序上下文,“Сааааааааааааа,
吐司。长度(短)。show()
TryText=editText.text.toString()
startActivity(Intent(Intent.ACTION_视图,Uri.parse(TryText)))
返回
}其他
Toast.makeText(应用上下文,“Сааааааааааааа107,
吐司。长度(短)。show()
}
val searchQuery=editText.text.toString()//要搜索的查询
Poisk(搜索查询)
}
fun isConnected():布尔值{
val ni=(作为ConnectionManager的getSystemService(Context.CONNECTIVITY_服务)
.activeNetworkInfo
返回ni!=null&&ni.isConnected
}
fun tryHttp(url:String):布尔值{
var url=url
url=url.toLowerCase().trim{it rezList.add(ri.title)}
val适配器:ListAdapter=ArrayAdapter(此,
android.R.layout.simple_list_item_1,rezList)
listView.adapter=适配器
// добвляем для списка слушатель
listView.setOnItemClickListener{{uu,{uu,位置,}
// по позиции получаем выбранный элемент
val selectedItem=rezList[位置]
Toast.makeText(applicationContext,“щааааааа$selectedItem”,
吐司。长度(短)。show()
Toast.makeText(applicationContext,“баааааа”\n
${result.items[position].link},Toast.LENGTH\u LONG.show()
startActivity(意向(意向.行动)视图,
parse(result.items[position].link)))
}
返回真值
}否则{
Log.d(“AS1”,“resultgetItems()=null”)
Toast.makeText(applicationContext,“resultgetItems()=null”,
吐司。长度(短)。show()
}
}捕获(e:例外){
Log.d(“泊松”、“例外”)
Toast.makeText(applicationContext,“POISK:Exception”,
吐司。长度(短)。show()
}
返回错误
}
}