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、结尾

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据时代,如何基于机密虚拟化技术构建数据安全的“基石”

云布道师 2023 年 10 月 31 日-11 月 2 日&#xff0c;2023 云栖大会在中国杭州云栖小镇举行&#xff0c;阿里云弹性计算产品专家唐湘华、阿里云高级安全专家刘煜堃、蚂蚁集团高级技术专家肖俊贤三位嘉宾在【云服务器 & 计算服务】专场中共同带来题为《大数据时代&#xf…

3-高可用-隔离术

隔离是指将系统或资源分割开&#xff0c;系统隔离是为了在系统发生故障时&#xff0c;能限定传播范围和影响范围&#xff0c;即发生故障后不会出现滚雪球效应&#xff0c;从而保证只有出问题的服务不可用&#xff0c;其他服务还是可用的。 比较多的隔离手段有线程隔离、进程隔…

Java--包,访问修饰符,多态数组,==和equals,hashcode,toString

包 同一个包里面不能有重复的类&#xff0c;不同的包可以有相同的类&#xff0c;包和包之间互不干涉。一个包下面有很多的类。 包的命名规则&#xff1a; 只能包含数字&#xff0c;字母&#xff0c;下划线&#xff0c;小圆点&#xff0c;但不能用数字开头&#xff0c;不能是关…

2_js运算符与流程控制语句

1. 运算符的应用 1.1 算数运算符 浮点数的精度问题 浮点数值的最高精度是17位小数&#xff0c;不要直接判断两个浮点数是否相等。 var result 0.1 0.2; // 结果不是 0.3&#xff0c;而是&#xff1a;0.30000000000000004 console.log(0.07 * 100); // 结果不是 7&#…

C++学习笔记(十五)

继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系&#xff0c;例如下图中&#xff1a; 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少重…

3 - Electron app BrowserWindow对象-关于窗口

优雅的打开应用~ 当加载缓慢&#xff0c;打开应用的一瞬间会出现白屏&#xff0c;以下方法可以解决 const mainWindow new BrowserWindow({ show: false }) mainWindow.once(ready-to-show, () > {mainWindow.show() }) 设置背景颜色 const win new BrowserWindow({ b…

MongoDB的原子操作findAndReplace、findOneAndDelete和deleteMany

本文主要介绍MongoDB的原子操作findAndReplace、findOneAndDelete和deleteMany。 目录 MongoDB的原子操作一、findAndReplace二、findOneAndDelete三、deleteMany MongoDB的原子操作 MongoDB的原子操作指的是在单个操作中对数据库的数据进行读取和修改&#xff0c;并确保操作是…

selenium css定位

selenium-css定位 element_css driver.find_element(By.CSS_SELECTOR, css表达式)css定位说明 selenium中的css定位&#xff0c;实际是通过css选择器来定位到具体元素&#xff0c;css选择器来自于css语法 css定位优点 语法简洁对比其他定位方式&#xff0c;定位效率更快对…

高防服务器防御靠谱吗?

​  随着互联网的普及和信息技术的不断发展&#xff0c;网络安全问题日益突出。高防服务器作为一种专业的网络安全设备&#xff0c;在防御网络攻击方面扮演着越来越重要的角色。然而&#xff0c;高防服务器是否靠谱&#xff0c;是否能够有效地防御各种网络攻击&#xff0c;一…

CUMT--Java--JDBC编程

目录 一、JDBC简介 二、数据库访问 1、加载数据库驱动 2、建立数据连接 3、创建Statement对象 4、执行SQL语句 5、访问结果集 三、MetaData接口 1、DatabaseMetaData接口 2、ResultSetMetaData接口 四、事务 1、JDBC中的事务 2、保存点 3、批量更新 一、JDBC简…

【JAVA】重力反弹,反弹高次一次比一次低

本来是想实现泡泡屏保(javascript实现漂亮的气泡碰撞效果(Chrome浏览器下更佳) 下载-脚本之家)的&#xff0c;还未实现 import javax.swing.*; import java.awt.*; import java.util.LinkedList; import java.util.Random;class Bubble {public static Image image;public int…

轮滑加盟培训机构管理系统源码开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 随着轮滑运动的普及和市场需求的增加&#xff0c;轮滑加盟培训机构逐渐兴起。这些机构面临着学员管理、课程排班、教师管理等多方面的挑战。为了提高管理效率和服务质量&#xff0c;需要开发一套专门针对轮滑加盟培训…

FormData文件上传多文件上传

一、简介 ​ 通常情况下&#xff0c;前端在使用post请求提交数据的时候&#xff0c;请求都是采用application/json 或 application/x-www-form-urlencoded编码类型&#xff0c;分别是借助JSON字符串来传递参数或者keyvalue格式字符串&#xff08;多参数通过&进行连接&#…

大数据分析22、23真题回忆

2022 学长描述 1. 一个很简单的据估计 2. 算一个决策树 3. Cypher图 4.Hadoop和Spark的区别 2023 真题回忆 1. 大数据分析的定义 说出大数据分析三个层次 2.大数据分析流程 预处理部分包含哪几个步骤 3.Spark核心部件和应用库有哪些 并简要说明功能 4. 主成分分析和因…

HTML5+CSS3小实例:纯CSS实现锚点平滑过渡

实例:纯CSS实现锚点平滑过渡 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

【无语】Microsoft Edge 浏览器不显示后台返回的数值数据

Microsoft Edge 禁用 JSON 视图 写在前面禁用 JSON 视图 写在前面 遇到一个有意思的事情&#xff0c;在用 Microsoft Edge 浏览器发送请求测试时发现&#xff0c;后端返回的数值数据没有正常展示&#xff0c;而是类似查看源码的结果&#xff0c;只显示了一个行号1&#xff0c;…

最优化理论复习--对偶单纯形方法及灵敏度分析

对偶单纯形方法 定义&#xff1a;设 x ( 0 ) x^{(0)} x(0) 是(L)问题的基本解&#xff08;不一定是可行解&#xff08;极点&#xff09;&#xff09;&#xff0c;如果它的对偶问题的解释可行的&#xff0c;则称 x ( 0 ) x^{(0)} x(0) 为原问题的对偶可行基本解 从而衍生出结…

Chappyz 生态迎重磅利好:多链应用程序启动、100% 收入共享计划开启

“首款由人工智能驱动的社区建设工具 Chappyz&#xff0c;即将在 12 月 21 日推出全新的多链平台并向社区开放&#xff0c;同时制定了生态收入 100% 向 Stakers 共享的计划&#xff0c;这不仅是 Chappyz 生态的一个全新进展&#xff0c;也是 Chappyz 生态发展的重磅利好。” 构…

0137 - 跳转控制语句 break、continue、return

文章目录 1 break1.1 基本介绍1.2 基本语法1.3 注意事项和细节说明 2 continue2.1 基本介绍2.2 基本语法 3 return 1 break 1.1 基本介绍 break 语句用于终止某个语句块的执行&#xff0c;一般使用在 switch 或者循环[for , while , do-while]中 1.2 基本语法 { ……break…

新时代体育场馆的未来之路——气膜体育馆

近年来&#xff0c;我国正全面贯彻实施全民健身国家战略&#xff0c;秉持“发展群众体育&#xff0c;服务健康中国”的理念&#xff0c;深入推动群众参与的体育活动&#xff0c;努力实现全民健身与全民健康的深度融合发展。在这一大潮中&#xff0c;体育场馆建设成为业内的一项…