初次接触安卓开发本次,开发软件android studio,简述一下开发的时候遇到一些问题的解决方案。
首先加入网络访问权限
文件路径 \app\src\main\AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
图例
添加okhttp 依赖jar包
File -> Project Structure ->app->Dependencies 点击+号
选择Library Dependency搜索 okhttp 和 okio
选择第一个就可以了 然后点击OK 重复上面添加okio添加完后如下
\app\build.gradle里可以看到加入的jar依赖
主要核心代码
OkHttpClient mOKHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .build(); String url = ""; Request request = new Request.Builder() .get() .url(url) .build(); //new call Call call = mOKHttpClient.newCall(request); //请求加入调度 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String htmlStr = response.body().string(); try { JSONArray jsonArray = new JSONArray(String.valueOf(htmlStr)); Random rand = new Random(); int s = rand.nextInt(jsonArray.length()); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); } } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });
参考代码示例代码
package com.jfc.jiangfengcheng.wheretoeat; import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.google.android.gms.appindexing.Action; import com.google.android.gms.appindexing.AppIndex; import com.google.android.gms.common.api.GoogleApiClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends Activity { private Button button; private Button czbutton; private JSONObject jsonObject; private TextView textView; private Map<String, Integer> map = new HashMap<String, Integer>(); private String str = ""; private String topstr=""; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; /** * ATTENTION: This was auto-generated to implement the App Indexing API. * See https://g.co/AppIndexing/AndroidStudio for more information. */ private GoogleApiClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.btn); czbutton = (Button) findViewById(R.id.cz); czbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textView = (TextView) findViewById(R.id.text); textView.setText("请点击下面按钮随机去哪吃"); map.clear(); textView = (TextView) findViewById(R.id.top); textView.setText("等待最终结果..."); } }); //1.匿名内部类 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("匿名内部类", "点击事件"); OkHttpClient mOKHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .build(); String url = ""; Request request = new Request.Builder() .get() .url(url) .build(); Log.i("匿名内部类", url); //new call Call call = mOKHttpClient.newCall(request); //请求加入调度 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String htmlStr = response.body().string(); try { JSONArray jsonArray = new JSONArray(String.valueOf(htmlStr)); Random rand = new Random(); int s = rand.nextInt(jsonArray.length()); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); Log.i("值", jsonObject.getString("address")); if (i == s) { if (map.get(jsonObject.getString("address")) != null) { int a = map.get(jsonObject.getString("address")) + 1; map.put(jsonObject.getString("address"), a); } else { map.put(jsonObject.getString("address"), 1); } //这里将map.entrySet()转换成list List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { //升序排序 public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o1.getValue().compareTo(o2.getValue()); } }); Collections.reverse(list); int b =0; topstr =""; str = ""; for (Map.Entry<String, Integer> key : list) { if(b==0){ if(key.getValue()>1){ topstr = key.getKey(); }else{ topstr = "暂无结果继续点击"; } } str += key.getKey() +":"+key.getValue() + "\n"; b++; } handler.post(new Runnable() { @Override public void run() { textView = (TextView) findViewById(R.id.text); textView.setText(str); textView = (TextView) findViewById(R.id.top); textView.setText(topstr); } }); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.i("参数", htmlStr); } }); } }); // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); } @Override public void onStart() { super.onStart(); // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. client.connect(); Action viewAction = Action.newAction( Action.TYPE_VIEW, // TODO: choose an action type. "Main Page", // TODO: Define a title for the content shown. // TODO: If you have web page content that matches this app activity's content, // make sure this auto-generated web page URL is correct. // Otherwise, set the URL to null. Uri.parse("http://host/path"), // TODO: Make sure this auto-generated app URL is correct. Uri.parse("android-app://com.jfc.jiangfengcheng.wheretoeat/http/host/path") ); AppIndex.AppIndexApi.start(client, viewAction); } @Override public void onStop() { super.onStop(); // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. Action viewAction = Action.newAction( Action.TYPE_VIEW, // TODO: choose an action type. "Main Page", // TODO: Define a title for the content shown. // TODO: If you have web page content that matches this app activity's content, // make sure this auto-generated web page URL is correct. // Otherwise, set the URL to null. Uri.parse("http://host/path"), // TODO: Make sure this auto-generated app URL is correct. Uri.parse("android-app://com.jfc.jiangfengcheng.wheretoeat/http/host/path") ); AppIndex.AppIndexApi.end(client, viewAction); client.disconnect(); } }
如果有什么疑问欢迎留言提问共同探讨。
路过支持一下