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

2023-12-19

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

在这里插入图片描述

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

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

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">

    <LinearLayout
        android: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">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ICP备案号:"
            android:textColor="#B4B4B4"
            android:textSize="11sp" />

        <TextView
            android:id="@+id/tvTxt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="京ICP备11122222号-01A"
            android:textColor="#B4B4B4"
            android:textSize="11sp" />

        <TextView
            android: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">
    <corners
        android:bottomLeftRadius="3dp"
        android:bottomRightRadius="3dp"
        android:topLeftRadius="3dp"
        android:topRightRadius="3dp" />
    <solid android:color="#CCCCCC" /><!-- 填充颜色 -->

    <stroke
        android: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">
    <corners
        android:bottomLeftRadius="3dp"
        android:bottomRightRadius="3dp"
        android:topLeftRadius="3dp"
        android:topRightRadius="3dp" />
    <solid android:color="#ffffff" /><!-- 填充颜色 -->

    <stroke
        android: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.WebViewUtil
        android: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;

    @Override
    protected 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() {
            @Override
            public 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;
            }
        });
    }

    @Override
    public 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/";

    @Override
    protected 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);
    }

    @Override
    protected 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 {
        @Override
        public 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、结尾

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

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

App(Android)ICP备案号查询——————高仿微信 的相关文章

  • SharedPreferences - java.lang.Boolean 无法转换为 java.lang.String

    我对因不应该抛出的异常而感到困惑 错误如下 java lang ClassCastException java lang Boolean cannot be cast to java lang String 但是 我的代码不会尝试将布尔值转
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 有没有办法隐藏 TextView 中的文本?

    有没有办法隐藏 TextView 中的部分 但不是全部 文本 我尝试使用 AbsoluteSizeSpan 将大小设置为 0 但这没有任何我看到的视觉效果 你可以将大小设置为 1 但实际上你会得到凹凸不平的线条 而不是可读的文本 很可爱 但
  • WebView 与 Chrome 自定义选项卡

    我正在构建一个应用程序 在详细活动中我必须显示一个网页 我本来打算使用 WebView 但后来我看到了 Chrome Custom Tab 你们认为最好实施什么 为什么 如果您只想显示某个页面 那么我建议您使用 chrome 自定义选项卡
  • 尝试拍摄 https://github.com/appsthatmatter/GraphView 的图表快照时出现 IllegalStateException

    我正在尝试拍摄 GraphView 的快照 但它给出了错误 GraphView 必须在硬件加速模式下使用 我正在使用以下代码来拍摄快照 Bitmap bitmap Bitmap createBitmap view getWidth view
  • 我从 String placeName = placeText.getText().toString(); 收到空指针异常

    您好 想从编辑文本中获取地名并在地图上标记 这是我的代码 其中出现空指针异常 请帮助我应该做什么以及哪里出错了 因为我从对话框中的编辑文本字段获取地名 View layout View inflate this R layout alert
  • 我想使用对话框显示两个数字选择器

    我试图仅使用 java 在对话框上显示两个数字选择器 代码正在工作 但我无法将其排列为相等的宽度 这是我的代码 RelativeLayout relative new RelativeLayout mContext final Number
  • 如何在android 4.2中显示选项菜单

    我正在尝试在我的测试应用程序中创建菜单选项 当我将清单中的主题设置为默认时 我可以看到菜单 菜单显示在顶部 如果我将清单中的主题设置为 NoTitleBar 我看不到菜单选项 我想在清单中设置主题 NoTitleBar 时获取菜单 如何修复
  • 小米设备正在停止前台服务

    我们有一个几乎永远运行的应用程序前台服务 同时使用系统托盘上的通知 这是正常的初始化 该应用程序仅依赖于此服务 在我们测试的每台设备上 即使任务被删除 服务也会继续运行 但在小米设备上 从最近的任务滑动后 它突然停止 然后再次启动 具体取决
  • 删除对象时删除嵌套字段中的索引

    我仍在使用 Firebase 这次我有一个与删除对象相关的问题 我有如下结构 users UsErId1 name Jack email email protected cdn cgi l email protection UsErId2
  • Android 中表与游标的并集

    我正在尝试将两个具有相同字段的表合并起来 通过内容提供程序 创建一个用于创建 ListView 的游标 Override public Cursor query Uri uri String projection String select
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • 长按 HOME 按钮菜单隐藏 Android 应用程序

    我想从 且仅从 完成后长时间按住 HOME 按钮时出现的菜单中隐藏我的 Android 应用程序 有没有办法做到这一点 以编程方式调用 finish 并不能解决问题 有很多关于从启动器和任务管理器隐藏应用程序的线程 但这不是我想要的 我只是
  • 如何从MediaCodec获取解码格式?

    我正在与MediaCodec 我用它来解码 mp4 video MediaCodec 将视频解码为YUV格式 但我需要得到RGBA 一切都很好 但我发现有几种可能的格式 例如YUV420 YUV422等等 因此 据我所知 要进行转换 我需要
  • 在 Android 运行时更改和应用主题 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Android 运行时更改当前主题 https stackoverflow com questions 2482848 how to change current theme at runti
  • 图标和导航视图之间的左边距

    我必须在图标和图标之间添加左边距NavigationView 如下图中箭头所示 我知道根据谷歌规范 这个边距必须有16dp但我需要改变它 我努力了
  • 如何使用 javascript 迭代文件系统目录和文件?

    我正在使用 Javascript 编写一个应用程序 该应用程序将与 Phonegap 一起使用来制作 Android 应用程序 我正在使用 Phonegap File API 来读取目录和文件 相关代码如下所示 document addEv
  • 如何获取在代码中 attrs.xml 中创建的枚举

    我创建了一个自定义视图 找到它here https bitbucket org informatic0re awesome font iconview 具有枚举类型的可声明样式属性 在 xml 中 我现在可以为我的自定义属性选择枚举条目之一
  • 如何调试仅在发布模式下崩溃的 Android 应用程序

    在调试模式下一切正常 但在发布模式下崩溃 调试模式下有哪些所需权限在发布模式下未打开 EDIT 当我将 链接 设置为 无 时 我会通过第一个屏幕进入 登录 屏幕 但是 当我添加发布权限时Internet 第一次尝试读取远程实体框架核心表时它
  • 新的 Android 项目未创建布局或 Java 文件

    这两天我一直在尝试简单地阅读 Big Nerd Ranch Android 编程书 第一章的前几页 我的问题的要点是 当我创建新的 Android 应用程序时 不会创建布局或 java 文件 我已经从 Android 开发站点安装了 ADT

随机推荐

  • 70个python练手项目 下载,python入门练手小程序

    大家好 小编来为大家解答以下问题 70个python练手项目百度网盘 70个python练手项目 下载 今天让我们一起来看看吧 今天博主给大家带来了一份大礼 Python爬虫70例 以及完整的项目源码 本文下面所有的爬虫项目都有详细的配套教
  • 公抓抓:批量获取企业工商信息的办法

    网站产生数据的作用 企业公示系统的数据 目前网络上每天都有海量数据诞生 这些数据蕴含着巨大的价值 很多时候企业和政府都需要大量的企业数据用于自身的运营 分析等 这些时候往往需要全面的数据才能得出更加客观的结论 比如金融机构在进行业务合作时
  • python——异常机制及常见异常汇总

    异常机制本质 异常指程序运行过程中出现的非正常现象 例如用户输入错误 除数为零 需 要处理的文件不存在 数组下标越界等 所谓异常处理 就是指程序在出现问题时依然可以正确的执行剩余的程序 而 不会因为异常而终止程序执行 python 中 引进
  • 用举例来学习Python中的并行性、并发性和异步性

    Parallelism Concurrency and AsyncIO in Python by example 用举例来学习Python中的并行性 并发性和异步性 一篇中文译文 来自 Parallelism Concurrency and
  • 关于tortoiseGit找不到应用更改、解决冲突的办法

    其实是win11搞的鬼 win11系统默认的右键弹出选项太少了 用shift 右键或者右键后选择显示更多选项 然后再选择tortoiseGit就都出来了
  • 什么是Linux内核?

    Linux 内核 是一个免费 开源 整体 模块化 类 Unix 操作系统内核 它是Linux操作系统 OS 的主要组件 是计算机硬件与其进程之间的核心接口 内核是操作系统 OS 核心的计算机程序 它是操作系统中首先加载并保留在主内存中的部分
  • 案例分享|企业为什么要选择数字化转型?

    数字化在现代社会中扮演着重要的角色 成为企业转型的必由之路 随着科技的发展和信息化的进程 越来越多的企业开始拥抱数字化转型 以应对市场的变化和竞争的压力 数字化带来了诸多好处 不仅提高了企业的效率和生产力 还拓展了企业的经营领域和市场空间
  • kali更新命令!获取最新版本Kali Linux

    Kali Linux 是一个基于 Debian 的 Linux 发行版 包含各种独特且简化的实用程序 可提高渗透测试的准确性 速度和易用性 从表面上看 Kali 似乎与任何其他操作系统完全相同 它播放音频和文本文件 运行 Windows 和
  • 怎么用python画一个皮卡丘,用python画皮卡丘的代码

    大家好 小编来为大家解答以下问题 怎么用python画一个皮卡丘 用python画皮卡丘的代码 今天让我们一起来看看吧 给大家看看我的皮卡丘 电脑屏幕比较小 所以看不见假皮卡丘真实的身体 话不说上代码 import turtle as t
  • 课题立项查询怎么查 快码论文

    大家好 今天来聊聊课题立项查询怎么查 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 课题立项查询怎么查 在学术研究和项目申请中 了解课题立项信息对于研究者来说非常重要 快码写作 那么 课题
  • 持续集成交付CICD:K8S 自动化完成前端项目应用发布与回滚

    目录 一 实验 1 环境 2 GitLab新建项目存放K8S部署文件 3 Jenkins手动测试前端项目CD 流水线代码 下载部署文件 4 将K8S master节点配置为jenkins从节点 5 K8S 手动回滚前端项目版本 6 Jenk
  • 《LeetCode力扣练习》代码随想录——双指针法(替换数字---Java)

    LeetCode力扣练习 代码随想录 双指针法 替换数字 Java 刷题思路来源于 代码随想录 54 替换数字 受制于语言限制 普通解法 import java util Scanner class Main public static v
  • Set系列集合

    Set系列集系概述 Set系列集合特点 无序 存取顺序不一致 不重复 可以去除重复 无索引 没有带索引的方法 所以不能使用普通for循环遍历 也不能通过索引来获取元素 Set集合的功能上基本上与Collection的API一致 Set集合实
  • 想学习了解渗透测试?看完这一篇就够了

    一 什么是渗透测试 渗透测试 也称为笔测试 是针对计算机系统的模拟网络攻击 以检查可利用的漏洞 在这样的背景下Web 应用程序安全性方面 渗透测试通常用于增强 Web 应用程序防火墙 WAF 笔测试可能涉及尝试破坏任意数量的应用程序系统 例
  • 【功能更新】支持文档合并导出PDF/HTML格式;线上文章SEO设置能力优化

    HelpLook 功能更新速览 文档管理能力 1 导出支持多篇文档合在一个HTML文件 2 支持下载附件时保留原始文件名 3 主页 推荐文章 支持添加外链 4 文章URL根据标题自动生成 5 文章支持添加 作者 6 博客模版支持置顶文章 1
  • python打包exe failed to execute,python打包成exe 用不了

    本篇文章给大家谈谈python打包的exe有的电脑不能运行 以及python文件打包成exe文件运行报错 希望对各位有所帮助 不要忘了收藏本站喔 大家好 给大家分享一下一个有趣的事情 很多人还不知道这一点 下面详细解释一下 python t
  • Windows7系统ntoskrnl.exe文件丢失问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个ntoskrn
  • Python Plotly交互可视化详解

    今天给大家分享一篇可视化干货 介绍的是功能强大的开源 Python 绘图库 Plotly 教你如何用超简单的 甚至只要一行 代码 绘制出更棒的图表 沉没成本谬误 是人们常犯的几种认知偏差之一 由于在某件事上已经投入了 沉没 太多的成本 即使
  • 论文查重率太低怎么改能高一点 papergpt

    大家好 今天来聊聊论文查重率太低怎么改能高一点 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 论文查重率太低怎么改能高一点 在撰写论文时 有时会遇到查重率过低的问题 智能写作 这通常是因为
  • App(Android)ICP备案号查询——————高仿微信

    个人主页 拉莫帅 CSDN博客 博文 132篇 原创 130篇 转载 2篇 总阅读量 388923 粉丝量 112 感谢点赞和关注 每天进步一点点 加油 目录 工业和信息化部关于开展移动互联网应用程序备案工作的通知 1 前言 2 备案收费