Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中应该使用什么库和什么方法,从而获得类似于Java代码的搜索?_Java_Android_Search - Fatal编程技术网

Android中应该使用什么库和什么方法,从而获得类似于Java代码的搜索?

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.

我在应用程序中实现搜索。我尝试实施第七个答案中提出的方案

我使用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.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()
}
返回错误
}
}