hello,又是我鑫鑫

今天给大家带来每日一文APP的实现,从中会用到网页json解析,这里懂的都懂啊,这篇文章多多少少对你也有点启发,那么话不多说,直接看代码吧

-MainActivity.java

- activity_main.xml

- AndroidManifest.xml

效果如下

/-------------------------------------/

MainActivity.java

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.text.format.Time;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.mycompany.myapp.R;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Date;
import java.text.SimpleDateFormat;
import org.json.JSONException;
import org.json.JSONObject;public class MainActivity extends Activity {private TextView t,a,c,ti;LinearLayout Get_tips,Get_results;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Article_acquisition();t = findViewById(R.id.title);a = findViewById(R.id.author);c = findViewById(R.id.content);ti = findViewById(R.id.time);Get_tips = findViewById(R.id.Get_tips);Get_results = findViewById(R.id.Get_results);new Handler().postDelayed(new Runnable(){@Overridepublic void run() {Get_tips.setVisibility(View.GONE);if(Get_tips.getVisibility()==View.GONE){Get_results.setVisibility(View.VISIBLE);SharedPreferences sharedPreferences = getSharedPreferences("每日一文",MODE_PRIVATE);String title =  sharedPreferences.getString("标题","");t.setText(title);String author =  sharedPreferences.getString("作者","");a.setText(author);String content =  sharedPreferences.getString("内容","");c.setText(content);String time =  sharedPreferences.getString("时间","");ti.setText(time);}}}, 4000);}private void Article_acquisition(){new Thread() {@Overridepublic void run() {try {HttpURLConnection connection = null;URL url = new URL("http://ovooa.com/API/mryw/");connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");InputStream is = connection.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));StringBuilder sb = new StringBuilder();String line = null;while ((line = br.readLine())!=null){sb.append(line);}Log.d("MainActivity"," "+sb.toString());try {JSONObject jsonObject =   new JSONObject(sb.toString());  //整体文件是一个对象String num = jsonObject.getString("code");    //根据键值对寻找数据String progectName = jsonObject.getString("text");Log.i("第一组数据::","code: " + num + "\n"+ "text: " + progectName);JSONObject dataObject = jsonObject.getJSONObject("data"); //data Json 对象final String title = dataObject.getString("title");final String author = dataObject.getString("author");final String content = dataObject.getString("content");final String time = dataObject.getString("time");Log.i("第二组数据:", title);Log.i("第二组数据:",author);Log.i("第三组数据:",content);Log.i("第四组数据:",time);SharedPreferences.Editor editor = getSharedPreferences("每日一文",MODE_PRIVATE).edit();editor.putString("标题",title);editor.putString("作者",author);editor.putString("内容",content);editor.putString("时间",time).apply();saveToSDCard(title + "\n" + author + "\n" + content + "\n" + time);/*JSONArray jsonArrayWeek = dataObject.getJSONArray("week"); //week 是一个json 数组for (int i = 0; i < jsonArrayWeek.length(); i++) {String week = jsonArrayWeek.get(i).toString();Log.i("第三组数据:","week:" + week );}*/} catch (JSONException e) {e.printStackTrace();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}.start();}public static File dir = new File(Environment.getExternalStorageDirectory() + "/鑫鑫工具箱/每日一文/");public static void saveToSDCard(String content) {String en = Environment.getExternalStorageState();if (en.equals(Environment.MEDIA_MOUNTED)) {try {dir.mkdirs(); //create folders where write filesFile file = new File(Environment.getExternalStorageDirectory() + "/鑫鑫工具箱/每日一文/" + getFileName() + ".txt");OutputStream out = new FileOutputStream(file);out.write(content.getBytes());out.close();} catch (Exception e) {e.printStackTrace();}} else {}}public static String getFileName() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String date = format.format(new Date(System.currentTimeMillis()));return date;}}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"android:layout_height="match_parent"android:layout_width="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_height="100dp"android:layout_width="match_parent"android:orientation="vertical"android:gravity="center"><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:layout_width="wrap_content"android:text="每日一文"android:textStyle="bold"/><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceMedium"android:layout_width="wrap_content"android:text="后续将出分享文章的功能"/></LinearLayout><LinearLayoutandroid:layout_height="wrap_content"android:layout_width="match_parent"android:orientation="horizontal"android:gravity="center"android:id="@+id/Get_tips"><ProgressBarandroid:layout_height="wrap_content"android:layout_width="wrap_content"/><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:layout_width="wrap_content"android:text="文章获取中……"android:textStyle="bold"/></LinearLayout><LinearLayoutandroid:layout_height="wrap_content"android:layout_width="match_parent"android:orientation="vertical"android:id="@+id/Get_results"android:visibility="gone"><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:layout_width="match_parent"android:text="标题"android:id="@+id/title"android:gravity="center"/><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:layout_width="match_parent"android:text="作者"android:id="@+id/author"android:gravity="center"/><Viewandroid:background="?android:attr/dividerVertical"android:layout_height="1dp"android:layout_width="match_parent"/><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:layout_width="match_parent"android:text="内容"android:id="@+id/content"/><Viewandroid:background="?android:attr/dividerVertical"android:layout_height="1dp"android:layout_width="match_parent"/><TextViewandroid:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceMedium"android:layout_width="match_parent"android:text="时间"android:gravity="center"android:id="@+id/time"/></LinearLayout><Viewandroid:layout_height="0dp"android:layout_width="match_parent"/></LinearLayout></ScrollView>

AndroidManifest.xml

<!--完全的网络访问权限--><uses-permission android:name="android.permission.INTERNET"/><!--修改或删除您的SD卡中的内容--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--访问SD卡文件系统--><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!--读取您的SD卡中的内容--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

/-------------------------------------/

结尾

这个项目应该也没什么难度吧,感兴趣的小伙伴可以试一试,这里我就不放在Gitee或者GitHub上面了,毕竟这已经是全部代码了。

每日一文APP实现(网页json解析)相关推荐

  1. 一文吃透Json解析工具类合集(FastJson、Jackson、Gson)

    Json解析工具类 前言 一.各个JSON技术的简介 1.1 FastJson角色 1.2 Jackson角色 1.3 Gson角色 二.使用步骤 2.1 引入库 1.FastJson依赖 2.Jac ...

  2. 英雄联盟峡谷之巅前100爬取(动态网页+json格式解析)

    目的是爬取英雄联盟官网的峡谷之巅前100的信息,经观察发现,每一页只有25个玩家的信息. 先看网页源代码 看到前面,结构清晰,很好抓取. 到了中间部分发现只有前25个,后面的数据貌似被隐藏了.在此处可 ...

  3. 一文搞定json解析和封装问题,手把手带你学习CJSON开源代码

    cJSON保姆级教程 JSON简介 cJSON介绍 基本使用操作 关键数据结构 设计思想 JSON数据解析 解析步骤 json数据封装 封装步骤 封装示例 使用注意事项 内存及时释放 内存钩子 阅读心 ...

  4. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

  5. gson解析天气json_几种常用JSON解析库性能比较

    PS:公众号推文时间工作日早晨8点50分,周末下午3点30分,不见不散哈! 作者:飞污熊 xncoding.com/2018/01/09/java/jsons.html 本篇通过JMH来测试一下Jav ...

  6. Android-入门学习笔记-JSON 解析

    4 构建优秀 UI 的技巧 6 USGS 地震实时反馈和通知: http://earthquake.usgs.gov/earthquakes/feed/v1.0/index.php 电子表格格式的 U ...

  7. C# json解析字符串总是多出双引号_json从立地到成佛

    本文原创作者bigsai(同公众号),本文以浅显易懂的方式给大家讲解自己所认知的json,如果有错误或者不准确地方还请大家给出指正,另外本文以关卡课程的方式在博学谷也是免费开放的,大家也可通过关卡方式 ...

  8. Android网络数据JSON解析使用总结

    一.JSON基础知识 (一)什么是json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于Java ...

  9. 【GoCN酷Go推荐】快且灵活的JSON解析器-Jsoniter

    一.简介 什么是jsoniter? jsoniter(json-iterator)是一款快且灵活的 JSON 解析器,同时提供 Java 和 Go 两个版本.从 dsljson 和 jsonparse ...

最新文章

  1. AI 还原康乾盛世三代皇帝的样貌,简直太太太好玩了!
  2. seq2seq 序列中的<EOS>是什么意思?
  3. 写文章比较正规的格式
  4. c语言用指针带出局部变量,关于C语言中返回局部变量和局部指针变量
  5. 定时任务scheduleAtFixedRate设定每天某个时刻执行
  6. 03.elasticsearch_index操作
  7. Windows句柄-2
  8. Spring Cloud微服务之业务物理删除(十)
  9. java面对对象 关键字this super
  10. 终端进入网页_华为云进入IDC MarketScape终端安全检测与响应市场领导者象限
  11. 开发运维日常坑 总结 51-100
  12. jvm诊断之学习jcmd入门
  13. android studio 自定义生成BuildConfig文件,形成打包配置
  14. Linux视频教程—笔记(全)
  15. python如何获取免费的可以商用的字体
  16. 重复代码检查工具Simian
  17. Component MSCOMCTL.OCX or one of its dependencies not currently registered
  18. 飞机计算机系统叫什么,飞机电脑和个人电脑有什么不同?
  19. 牛逼哄哄的富士康老板郭台铭低头了,夏普将向三星供应液晶面板
  20. 湖北省荆门市谷歌高清卫星地图下载

热门文章

  1. 微软公司等数据结构+算法面试100题(第1-100题)全部出炉
  2. 【 >_JeeZhan/ Bookmarks 】
  3. html css超链接字体颜色,css 字体颜色(css color)
  4. 【分享】体验微软Bing在线绘图功能
  5. 【uos专区】解决uos内置外置光驱无法播放的问题
  6. Foxmail邮件的删除与恢复
  7. java lists.aslist_asList 可能真的不是你想的 as List
  8. win10 WSL2问题解决WslRegisterDistribution failed with error: 0x800701bc
  9. C# 不安全代码unsafe详解
  10. 零基础Unreal Engine 4(UE4)图文笔记之粒子系统(九)