当前位置: 首页 > news >正文

【1——Android端添加隐私协议(unity)1/3】

前言:这篇仅对于unity 发布Android端上架国内应用商店添加隐私协议,隐私协议是很重要的东西,没有这个东西,是不上了应用商店的。

对于仅仅添加隐私协议,我知道有三种方式,第一种和第二种基本一样
1.直接在unity里面新建PrivacyActivity.java,然后自定义一下AndroidManifest,就可以(就是直接在unity里面建java类了)(复杂度 低)
2.从Android studio 里面打出arr包,导入unity 里面使用 (复杂度 高)
3.从unity里面导出android studio 工程,在Android studio里面添加 (复杂度 高)

如何选择,这三种方法,我个人建议,如果只是添加隐私协议这种简单的需求,第一种就可以。我会实际演示这三种方式
以下是第二和第三方法的优缺点对比:

方法优点缺点
从 Android Studio 导出 AAR 包到 Unity1. 灵活性高,可以专注于 Android 原生代码的开发,而 Unity 负责游戏逻辑和渲染。 2. 适合需要在 Unity 中调用 Android 原生功能的场景,比如调用 Android 的 API 或第三方 SDK。 3. AAR 包可以独立于 Unity 项目开发和维护,便于模块化管理。1. 需要额外的步骤来确保 AAR 包与 Unity 的兼容性,比如导入 classes.jar 和处理资源文件冲突。 2. 如果需要频繁修改 Android 代码,每次都需要重新导出 AAR 包并更新 Unity 项目,流程相对繁琐。
从 Unity 导出 Android Studio 工程,在 Android Studio 里面添加1. 适合需要对 Unity 生成的 Android 项目进行深度定制的场景,比如修改 Gradle 配置、添加原生代码或第三方库。 2. 可以直接在 Android Studio 中调试和优化 Unity 生成的代码,便于解决复杂的构建问题。1. Unity 导出的 Android 工程结构复杂,包含大量自动生成的代码,可能增加开发和维护的难度。 2. 如果需要频繁在 Unity 和 Android Studio 之间切换开发,可能会导致项目文件的不一致。

因为这个字数比较多,我先介绍一下第三中,第一二种,后续会更新

三.第三种方法

从unity里面导出android studio 工程,在Android studio里面添加

步骤介绍,四步走

  • 第一步从unity打包出Android studuio 工程文件
    -在这里插入图片描述
  • 第二步 使用Android studio 打开项目
    -在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
我这里选的是Use Android Studio SDK,点击完成后,就打开了

  • 第三步,新建一个软件包,(我们把自己写逻辑代码都放在里面,比如隐私协议啊,或者微信登录支付什么的都可以放在这里,软件包的本质就是一个文件夹),具体步骤如下图
    右上角,视图选择为项目,Android studio 好几种视图模式,我们这里选择项目
    在这里插入图片描述
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 第四步,在com.companyName.projcetName,文件夹下新建一个PrivacyActvity活动,(实现我们隐私协议部分),并替换代码,具体如下图
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package com.companyName.projectName; //这里修改为你的包名import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.TypedValue;
import android.webkit.WebView;public class PrivacyActivity extends Activity implements DialogInterface.OnClickListener {private static final String PREFS_NAME = "PlayerPrefs"; // SharedPreferences的文件名private static final String PRIVACY_ACCEPTED_KEY = "PrivacyAcceptedKey"; // 用于存储用户是否同意隐私政策的键@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 检查用户是否已经同意隐私政策if (getPrivacyAccept()) {// 如果已经同意,直接进入Unity主ActivityenterUnityActivity();return;}// 如果未同意,显示隐私政策对话框showPrivacyDialog();}private String buildPrivacyHtml() {// 在这里设置隐私政策和用户协议的链接,修改为你的String userAgreementUrl = "https://blog.csdn.net/weixin_45478456?type=blog";String privacyPolicyUrl = "https://blog.csdn.net/weixin_45478456?type=blog";// 动态生成隐私政策的HTML内容return "欢迎使用本应用,在使用本应用前,请您充分阅读并理解 " +"<a href=\"" + userAgreementUrl + "\">《用户协议》</a>和" +"<a href=\"" + privacyPolicyUrl + "\">《隐私政策》</a>各条;" +"<br/>" +"1.保护用户隐私是本应用的一项基本政策,本应用不会泄露您的个人信息;" +"<br/>" +"2.我们会根据您使用的具体功能需要,收集必要的用户信息(如申请设备信息,存储等相关权限);" +"<br/>" +"3.在您同意App隐私政策后,我们将进行集成SDK的初始化工作,会收集您的android_id、Mac地址、IMEI和应用安装列表,以保障App正常数据统计和安全风控;" +"<br/>" +"4.为了方便您的查阅,您可以通过“设置-关于我们”重新查看该协议;" +"<br/>" +"5.您可以阅读完整版的隐私保护政策了解我们申请使用相关权限的情况,以及对您个人隐私的保护措施。";}private void showPrivacyDialog() {// 创建一个WebView用于显示隐私政策的HTML内容WebView webView = new WebView(this);webView.loadData(buildPrivacyHtml(), "text/html", "utf-8");// 创建一个不可取消的对话框AlertDialog.Builder privacyDialog = new AlertDialog.Builder(this);privacyDialog.setCancelable(false);privacyDialog.setView(webView); // 设置WebView为对话框的内容视图privacyDialog.setTitle("提示"); // 设置对话框标题// 设置“拒绝”按钮,并指定点击事件监听器privacyDialog.setNegativeButton("拒绝", this);// 设置“同意”按钮,并指定点击事件监听器privacyDialog.setPositiveButton("同意", this);// 创建并显示对话框privacyDialog.create().show();}@Overridepublic void onClick(DialogInterface dialogInterface, int i) {// 处理对话框按钮点击事件switch (i) {case AlertDialog.BUTTON_POSITIVE:// 如果点击了“同意”按钮setPrivacyAccept(true); // 保存用户同意隐私政策的状态enterUnityActivity(); // 进入Unity主Activitybreak;case AlertDialog.BUTTON_NEGATIVE:// 如果点击了“拒绝”按钮finish(); // 结束当前Activity,退出应用break;}}private void enterUnityActivity() {// 创建一个Intent,用于启动Unity主ActivityIntent unityAct = new Intent();unityAct.setClassName(this, "com.unity3d.player.UnityPlayerActivity");startActivity(unityAct);}private void setPrivacyAccept(boolean accepted) {// 使用SharedPreferences保存用户是否同意隐私政策的状态SharedPreferences.Editor prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit();prefs.putBoolean(PRIVACY_ACCEPTED_KEY, accepted);prefs.apply(); // 提交更改}private boolean getPrivacyAccept() {// 从SharedPreferences中获取用户是否同意隐私政策的状态,默认为falseSharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);return prefs.getBoolean(PRIVACY_ACCEPTED_KEY, false);}}

代码关键处都注释了,不懂,拿代码直接问AI就好

  • 第五步,替换AndroidManifest.xml里的内容,具体如图,代码在图下面(!注意,这里的内容和第一个,第二个方法里的不同)
    在这里插入图片描述
    在这里插入图片描述
    AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><uses-permission android:name="android.permission.INTERNET" /><uses-feature android:glEsVersion="0x00030000" /><uses-featureandroid:name="android.hardware.vulkan.version"android:required="false" /><uses-featureandroid:name="android.hardware.touchscreen"android:required="false" /><uses-featureandroid:name="android.hardware.touchscreen.multitouch"android:required="false" /><uses-featureandroid:name="android.hardware.touchscreen.multitouch.distinct"android:required="false" /><application android:extractNativeLibs="true"><activityandroid:name="com.companyName.projectName.PrivacyActivity"android:exported="true"><!-- 添加以下 intent-filter --><intent-filter><category android:name="android.intent.category.LAUNCHER" /><action android:name="android.intent.action.MAIN" /></intent-filter></activity><meta-dataandroid:name="unity.splash-mode"android:value="0" /><meta-dataandroid:name="unity.splash-enable"android:value="True" /><meta-dataandroid:name="unity.launch-fullscreen"android:value="True" /><meta-dataandroid:name="unity.render-outside-safearea"android:value="True" /><meta-dataandroid:name="notch.config"android:value="portrait|landscape" /><meta-dataandroid:name="unity.auto-report-fully-drawn"android:value="true" /><activityandroid:name="com.unity3d.player.UnityPlayerActivity"android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density"android:exported="true"android:hardwareAccelerated="false"android:launchMode="singleTask"android:resizeableActivity="false"android:screenOrientation="fullUser"android:theme="@style/UnityThemeSelector"><meta-dataandroid:name="unityplayer.UnityActivity"android:value="true" /><meta-dataandroid:name="notch_support"android:value="true" /></activity></application></manifest>
  • 第六步,打包测试,我这里用的是雷电模拟器测试,步骤如下
    先打开雷电模拟器
    在这里插入图片描述

在这里插入图片描述
等待一会,就可以在模拟器里看到了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这样子就OK啦

如果想打包出正式版本,打包出apk的话,大致步骤如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
填写好之后,无脑下一步
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功后,去下图项目这个文件夹就可以找到apk
在这里插入图片描述

至此,结束,如果简单添加隐私协议个人推荐第一种或者直接使用我打包好的第二种方法的arr包。我使用第三种只是因为公司电脑环境复杂,无法打包出来,修了一天,试了N多种方法没解决,又不能重装,所以才使用第三种。 如果有任何疑问,可以私信联系我,尽量回复。个人拙作,欢迎斧正、转载。

相关文章:

  • [密码学实战]使用C语言实现TCP服务端(二十九)
  • P1833 樱花
  • 高等数学-曲线积分与曲面积分
  • C++-继承
  • Axure系统原型设计首页模版方案
  • UE4 Simulation Stage 制作 平流
  • 5G 核心网中的 NPN 功能详解
  • 详解一下Go语言中的ParseInt
  • 【烧脑算法】单序列双指针:从暴力枚举到高效优化的思维跃迁
  • 后端开发实习生-抖音生活服务
  • 杰发科技AC7840——使用内部温度
  • AbMole推荐Rapamycin: 自噬、肿瘤、免疫、衰老研究的关键工具
  • Idea出现 100% classes 等
  • C++初阶-list的使用2
  • 【软考向】Chapter 3 数据结构
  • 全面学习c++类与对象(中)(非常重要)(析构构造拷贝函数赋值运算符重载等等)
  • SOC-ESP32S3部分:7-如何学习ESP32S3-IDF开发
  • PHP7内核剖析 学习笔记 第七章 面向对象
  • 如何减⼩dockerfile⽣成镜像体积?
  • ollama+open-webui搭建可视化大模型聊天
  • 做微博分析的网站/私人网站管理软件
  • 免费网站建站 网页/国外市场网站推广公司
  • 重庆平台网站建设平台/百度云盘登录电脑版
  • 哪个做砍价活动的网站好/aso关键词优化计划
  • 网站开发怎么谈/查询网站信息
  • 微信优惠群怎么做网站/seo文章生成器