App(Android)ICP备案号查询——————高仿微信

2024-01-18 02:10

本文主要是介绍App(Android)ICP备案号查询——————高仿微信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 😄 个人主页:✨拉莫帅-CSDN博客✨
  • 🤔 博文:132篇
  • 🔥 原创:130篇,转载:2篇
  • 🔥 总阅读量:388923
  • ❤️ 粉丝量:112
  • 🍁 感谢点赞和关注 ,每天进步一点点!加油!🍁

在这里插入图片描述

目录

    • 《工业和信息化部关于开展移动互联网应用程序备案工作的通知》
    • 1、前言
    • 2、备案收费?
    • 3、查询备案号
    • 4、拆解功能
    • 5、具体实现
      • 5.1、资源文件
      • 5.2、逻辑处理
    • 6、结尾

《工业和信息化部关于开展移动互联网应用程序备案工作的通知》

       官网文档直通车—> ✈✈✈✈✈✈

1、前言

       最近工作繁忙,忙里空闲下来给大家,写一下最近火热的ICP备案。

       相信大家最近应用上架,都遇到了无法审核的情况!原因就是是要求必须填写“中国大陆ICP备案号”。

让我们一起来看看、解析一下工信部官方文档

       根据工业和信息化部2023-07-21发布的《工业和信息化部关于开展移动互联网应用程序备案工作的通知》,原则上要求所有APP、小程序、快应用在2023年9月1日之后需要完成ICP备案后方可进行上架。

       对于已上架的APP、小程序、快应用,需要在2024年3月31日之前完成ICP备案,否则会对其进行下架。

       上面官方文档中所描述的APP、小程序、快应用备案均指ICP备案(非经营性互联网信息服务)

2、备案收费?

       首先通过如上了解ICP备案是什么之后,相信大家在各大平台都看到过相关的如何申请ICP备案号。新规出现的同时,也有一些人冒头收割收费等。。屡见不鲜。

ICP备案其实不用付费!付费就等着被收割,即使付费也是教你如何去填写相关资料等。

那么我们该如何备案呢?只需要我们找 “服务提供商(或者说服务器提供商):简单一点就是服务器是哪一家提供的,你就找哪一家就行(例如:我们使用的是阿里云)”, 填写app相关信息即可!

3、查询备案号

       对于已经申请下来的ICP备案号,对于app如何开发这个功能,并且让大众用户在公共平台查验呢?

这里我们借鉴一下微信,个人感觉微信平台关于这个功能就很好。对于相关操作都在程序应用内实现的,无需调用三方浏览器等,具体实现效果如下:

4、拆解功能

通过如上效果图,可以拆分为如下几个功能:

  1. 长按ICP备案号可以实现复制功能;
  2. 长按或者单击切换背景;
  3. 单击ICP备案号后,WebView加载页面且进度条展示。

看一下我们自己实现的效果:

5、具体实现

5.1、资源文件

activity_main.xml 布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"tools:context=".MainActivity"><LinearLayoutandroid:id="@+id/mIcp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="25dp"android:background="@drawable/selector_icp_background"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="ICP备案号:"android:textColor="#B4B4B4"android:textSize="11sp" /><TextViewandroid:id="@+id/tvTxt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="京ICP备11122222号-01A"android:textColor="#B4B4B4"android:textSize="11sp" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text=" >"android:textColor="#B4B4B4"android:textSize="11sp" /></LinearLayout>
</RelativeLayout>

selector_icp_background.xml 切换背景selector

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/gray_bg" android:state_pressed="true" /><item android:drawable="@drawable/white_bg" />
</selector>

gray_bg.xml 选中背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><cornersandroid:bottomLeftRadius="3dp"android:bottomRightRadius="3dp"android:topLeftRadius="3dp"android:topRightRadius="3dp" /><solid android:color="#CCCCCC" /><!-- 填充颜色 --><strokeandroid:width="0.1mm"android:color="#CCCCCC" /><!-- 描边,边框宽度、颜色 -->
</shape>

white_bg 默认背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><cornersandroid:bottomLeftRadius="3dp"android:bottomRightRadius="3dp"android:topLeftRadius="3dp"android:topRightRadius="3dp" /><solid android:color="#ffffff" /><!-- 填充颜色 --><strokeandroid:width="0.1mm"android:color="#ffffff" /><!-- 描边,边框宽度、颜色 -->
</shape>

activity_web_view.xml 加载webView资源文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".WebViewActivity"><com.harry.wifimanage.utils.WebViewUtilandroid:id="@+id/mWebView"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>

5.2、逻辑处理

MainActivity.class
展示ICP备案号,且实现点击切换效果;
这里采用剪切板来实现文本复制功能。

/*** @author 拉莫帅* @date 2023/12/19* @address* @Desc ICP备案号处理*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {// TextView控件引用private TextView mTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 初始化控件mTextView = findViewById(R.id.tvTxt);LinearLayout mIcpLayout = findViewById(R.id.mIcp);mIcpLayout.setOnClickListener(this);// 设置长按点击事件mIcpLayout.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {String text = mTextView.getText().toString();if (!TextUtils.isEmpty(text)) {ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);ClipData label = ClipData.newPlainText("label", text);clipboard.setPrimaryClip(label);Toast.makeText(MainActivity.this, "复制成功", Toast.LENGTH_SHORT).show();}return true;}});}@Overridepublic void onClick(View v) {if (v.getId() == R.id.mIcp) {startActivity(new Intent(MainActivity.this, WebViewActivity.class));}}
}

WebViewActivity.class 加载url资源
WebViewUtil:复用webView,设置其属性、且进度条显示

/*** @author 拉莫帅* @date 2023/12/19* @address* @Desc 加载url资源*/
public class WebViewActivity extends AppCompatActivity {// url地址private final String path = "https://beian.miit.gov.cn/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_web_view);// 初始化控件WebViewUtil mWeb = findViewById(R.id.mWebView);// 加载资源mWeb.loadUrl(path);}
}
/*** @author 拉莫帅* @date 2023/12/19* @address* @Desc 复用WebView*/
public class WebViewUtil extends WebView {private ProgressBar progressbar;public WebViewUtil(Context context) {super(context);}public WebViewUtil(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}public WebViewUtil(Context context, AttributeSet attrs) {super(context, attrs);initProgressBar(context);openJavaScript();setWebViewClient(new WebViewClient());setWebChromeClient(new WebChromeClient());}@SuppressLint("ResourceAsColor")private void initProgressBar(Context context) {progressbar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);int color = Color.argb(235, 2, 198, 94);ColorDrawable colorDrawable = new ColorDrawable();colorDrawable.setColor(color);progressbar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, dp2px(context, 3), 0, 0));// 改变progressbar默认进度条的颜色progressbar.setProgressDrawable(new ClipDrawable(colorDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL));addView(progressbar);}/*** 方法描述:启用支持javascript*/private void openJavaScript() {WebSettings settings = getSettings();settings.setJavaScriptEnabled(true);settings.setAllowFileAccess(true);settings.setAllowFileAccessFromFileURLs(true);settings.setAllowUniversalAccessFromFileURLs(true);settings.setCacheMode(WebSettings.LOAD_NO_CACHE);settings.setJavaScriptCanOpenWindowsAutomatically(true);// settings.setBuiltInZoomControls(true);settings.setSupportZoom(true);// settings.setUseWideViewPort(true);settings.setLoadWithOverviewMode(true);settings.setGeolocationEnabled(true);settings.setDomStorageEnabled(true);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);}/*** 方法描述:根据手机的分辨率从 dp 的单位 转成为 px(像素)*/public int dp2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}/*** 类描述:显示WebView加载的进度情况*/public class WebChromeClient extends android.webkit.WebChromeClient {@Overridepublic void onProgressChanged(WebView view, int newProgress) {if (newProgress == 100) {progressbar.setVisibility(GONE);} else {if (progressbar.getVisibility() == GONE)progressbar.setVisibility(VISIBLE);progressbar.setProgress(newProgress);}super.onProgressChanged(view, newProgress);}}
}

6、结尾

       看到这里,证明你已经都掌握了该功能!功能其实没有想象的那么复杂,拆分 -> 汇总 -> 实现功能即可。

在这里插入图片描述

这篇关于App(Android)ICP备案号查询——————高仿微信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617821

相关文章

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class