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

2023-12-20 08:36

本文主要是介绍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/515397

相关文章

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示