我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android 实现隐私政策提示弹窗(完整版)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android 实现隐私政策提示弹窗(完整版)

android studio版本:2021.2.1

例程名称:pravicydialog

功能:1、启动app后弹窗隐私协议2、屏蔽返回键3、再次启动不再显示隐私协议。

本例程的绝大部分代码来自下面链接,因为本人改了一些,增加了一些功能,所以不有脸的算原创了。

下面这个例子是“正宗”app隐私协议实现方法,而且协议内容使用的是txt格式文件,据说如果使用html格式文件(webview),各大平台在审核的时候大概率无法通过,但协议内容的还应该有更详细协议及说明的链接,我没做,暂时还没学会,会了再修改一下。

Android 实现隐私政策提示弹窗

对原作者表示感谢!

直接上代码:

MainActivity.java

package com.example.pravicydialog;import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;public class MainActivity extends AppCompatActivity {    Dialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        PravicyCheck();    }    public void onClickAgree(View v)    {        dialog.dismiss();        //下面将已阅读标志写入文件,再次启动的时候判断是否显示。        this.getSharedPreferences("file", Context.MODE_PRIVATE).edit()                .putBoolean("AGREE", true)                .apply();    }    public void onClickDisagree(View v)    {        System.exit(0);//退出软件    }    public void showPrivacy(String privacyFileName){        String str = initAssets(privacyFileName);        final View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog_privacy_show, null);        TextView tv_title = (TextView) inflate.findViewById(R.id.tv_title);        tv_title.setText("隐私政策授权提示");        TextView tv_content = (TextView) inflate.findViewById(R.id.tv_content);        tv_content.setText(str);        dialog = new AlertDialog                .Builder(MainActivity.this)                .setView(inflate)                .show();        // 通过WindowManager获取        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);        final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();        params.width = dm.widthPixels*4/5;        params.height = dm.heightPixels*1/2;        dialog.setCancelable(false);//屏蔽返回键        dialog.getWindow().setAttributes(params);        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);    }        public String initAssets(String fileName) {        String str = null;        try {            InputStream inputStream = getAssets().open(fileName);            str = getString(inputStream);        } catch (IOException e1) {            e1.printStackTrace();        }        return str;    }    public static String getString(InputStream inputStream) {        InputStreamReader inputStreamReader = null;        try {            inputStreamReader = new InputStreamReader(inputStream, "UTF-8");        } catch (UnsupportedEncodingException e1) {            e1.printStackTrace();        }        BufferedReader reader = new BufferedReader(inputStreamReader);        StringBuffer sb = new StringBuffer("");        String line;        try {            while ((line = reader.readLine()) != null) {                sb.append(line);                sb.append("\n");            }        } catch (IOException e) {            e.printStackTrace();        }        return sb.toString();    }    public void PravicyCheck(){        Boolean status =this.getSharedPreferences("file",Context.MODE_PRIVATE)                .getBoolean("AGREE",false);        if (status==true){        }else{            showPrivacy("privacy.txt");//放在assets目录下的隐私政策文本文件        }    }}

说明:

   dialog.setCancelable(false);屏蔽返回键

将已阅读标志写入文件,再次启动的时候判断是否显示。

preferences用法见,实现不同,原理一样:分享一个SharedPreferences的工具类,方便保存数据

this.getSharedPreferences("file", Context.MODE_PRIVATE).edit()                .putBoolean("AGREE", true)                .apply();

判断是否是第一次启动代码块:

 public void PravicyCheck(){        //读标志        Boolean status =this.getSharedPreferences("file",Context.MODE_PRIVATE)                .getBoolean("AGREE",false);        if (status==true){        //如果status为true,不显示对话框,直接进主页面。        }else{            //如果status不为true显示对话框            showPrivacy("privacy.txt");//放在assets目录下的隐私政策文本文件        }

activity_main.xml(这个是主页面,可以什么都不放,我放了一个textview)

    

  dialog_privacy_show.xml(对话框)

                                                                                            

 button_shape.xml(按钮形状等属性)

                        

 dialog_privacy_shape.xml(对话框属性)

                

各个文件位置如图:

最后动图:

来源地址:https://blog.csdn.net/kim5659/article/details/128787477

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android 实现隐私政策提示弹窗(完整版)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android隐私协议提示弹窗如何实现

这篇“Android隐私协议提示弹窗如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android隐私协议提示弹窗如何
2023-07-05

Android隐私协议提示弹窗的实现流程详解

这篇文章主要介绍了Android隐私协议提示弹窗的实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-01-30

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录