每日一文APP实现(网页json解析)
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解析)相关推荐
- 一文吃透Json解析工具类合集(FastJson、Jackson、Gson)
Json解析工具类 前言 一.各个JSON技术的简介 1.1 FastJson角色 1.2 Jackson角色 1.3 Gson角色 二.使用步骤 2.1 引入库 1.FastJson依赖 2.Jac ...
- 英雄联盟峡谷之巅前100爬取(动态网页+json格式解析)
目的是爬取英雄联盟官网的峡谷之巅前100的信息,经观察发现,每一页只有25个玩家的信息. 先看网页源代码 看到前面,结构清晰,很好抓取. 到了中间部分发现只有前25个,后面的数据貌似被隐藏了.在此处可 ...
- 一文搞定json解析和封装问题,手把手带你学习CJSON开源代码
cJSON保姆级教程 JSON简介 cJSON介绍 基本使用操作 关键数据结构 设计思想 JSON数据解析 解析步骤 json数据封装 封装步骤 封装示例 使用注意事项 内存及时释放 内存钩子 阅读心 ...
- android之json解析优化,Android开发之json解析
目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...
- gson解析天气json_几种常用JSON解析库性能比较
PS:公众号推文时间工作日早晨8点50分,周末下午3点30分,不见不散哈! 作者:飞污熊 xncoding.com/2018/01/09/java/jsons.html 本篇通过JMH来测试一下Jav ...
- Android-入门学习笔记-JSON 解析
4 构建优秀 UI 的技巧 6 USGS 地震实时反馈和通知: http://earthquake.usgs.gov/earthquakes/feed/v1.0/index.php 电子表格格式的 U ...
- C# json解析字符串总是多出双引号_json从立地到成佛
本文原创作者bigsai(同公众号),本文以浅显易懂的方式给大家讲解自己所认知的json,如果有错误或者不准确地方还请大家给出指正,另外本文以关卡课程的方式在博学谷也是免费开放的,大家也可通过关卡方式 ...
- Android网络数据JSON解析使用总结
一.JSON基础知识 (一)什么是json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于Java ...
- 【GoCN酷Go推荐】快且灵活的JSON解析器-Jsoniter
一.简介 什么是jsoniter? jsoniter(json-iterator)是一款快且灵活的 JSON 解析器,同时提供 Java 和 Go 两个版本.从 dsljson 和 jsonparse ...
最新文章
- AI 还原康乾盛世三代皇帝的样貌,简直太太太好玩了!
- seq2seq 序列中的<EOS>是什么意思?
- 写文章比较正规的格式
- c语言用指针带出局部变量,关于C语言中返回局部变量和局部指针变量
- 定时任务scheduleAtFixedRate设定每天某个时刻执行
- 03.elasticsearch_index操作
- Windows句柄-2
- Spring Cloud微服务之业务物理删除(十)
- java面对对象 关键字this super
- 终端进入网页_华为云进入IDC MarketScape终端安全检测与响应市场领导者象限
- 开发运维日常坑 总结 51-100
- jvm诊断之学习jcmd入门
- android studio 自定义生成BuildConfig文件,形成打包配置
- Linux视频教程—笔记(全)
- python如何获取免费的可以商用的字体
- 重复代码检查工具Simian
- Component MSCOMCTL.OCX or one of its dependencies not currently registered
- 飞机计算机系统叫什么,飞机电脑和个人电脑有什么不同?
- 牛逼哄哄的富士康老板郭台铭低头了,夏普将向三星供应液晶面板
- 湖北省荆门市谷歌高清卫星地图下载
热门文章
- 微软公司等数据结构+算法面试100题(第1-100题)全部出炉
- 【 >_JeeZhan/ Bookmarks 】
- html css超链接字体颜色,css 字体颜色(css color)
- 【分享】体验微软Bing在线绘图功能
- 【uos专区】解决uos内置外置光驱无法播放的问题
- Foxmail邮件的删除与恢复
- java lists.aslist_asList 可能真的不是你想的 as List
- win10 WSL2问题解决WslRegisterDistribution failed with error: 0x800701bc
- C# 不安全代码unsafe详解
- 零基础Unreal Engine 4(UE4)图文笔记之粒子系统(九)