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

建设厅官方网站新资质标准可以免费发外链的论坛

建设厅官方网站新资质标准,可以免费发外链的论坛,微网站做的比较好,商城网站建设经验一、前言 开机向导原理其实就是将特定的category的Activity加入ComponentResolver&#xff0c;如下 <category android:name"android.intent.category.SETUP_WIZARD"/>然后我们开机启动的时候&#xff0c;FallbackHome结束&#xff0c;然后启动Launcher的时候…

一、前言

开机向导原理其实就是将特定的category的Activity加入ComponentResolver,如下

 <category android:name="android.intent.category.SETUP_WIZARD"/>

然后我们开机启动的时候,FallbackHome结束,然后启动Launcher的时候,就会找到对应的开机向导Activity页面。所以我们现定制我们自己的应用。

二、定制MyApp

1.清单文件,定义好权限和Launcer相关的category

<?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.WRITE_SETTINGS"tools:ignore="ProtectedPermissions" /><uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"tools:ignore="ProtectedPermissions" /><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyProvision2"tools:targetApi="31"><activityandroid:name=".MainActivity"android:exported="true"android:label="@string/app_name"android:theme="@style/Theme.MyProvision2"><intent-filter android:priority="2"><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.HOME"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.intent.category.SETUP_WIZARD"/></intent-filter></activity></application></manifest>

2.MainActivity,简单一个页面,点击之后完成配置

package com.example.myprovision2import android.content.ComponentName
import android.content.pm.PackageManager
import android.os.Bundle
import android.provider.Settings
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import com.example.myprovision2.ui.theme.MyProvision2Themeclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)enableEdgeToEdge()setContent {MyProvision2Theme {Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->Greeting(name = "Android",modifier = Modifier.padding(innerPadding))Box(Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {Image(modifier=Modifier.fillMaxSize(),painter = painterResource(R.drawable.pic),contentScale = ContentScale.FillBounds,contentDescription = "")OutlinedButton(onClick = {finishSetup()}) {Text(text = "FINISH SET UP",)}}}}}}private fun finishSetup() {setProvisioningState()disableSelfAndFinish()}private fun disableSelfAndFinish() {// remove this activity from the package manager.val pm = packageManagerval name: ComponentName = ComponentName(this, MainActivity::class.java)pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP)
//         terminate the activity.finish()}private fun setProvisioningState() {
//        Settings
//        Log.i(TAG, "Setting provisioning state")// Add a persistent setting to allow other apps to know the device has been provisioned.Settings.Global.putInt(contentResolver, Settings.Global.DEVICE_PROVISIONED, 1)Settings.Secure.putInt(contentResolver, Settings.Secure.USER_SETUP_COMPLETE, 1)}}@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {Text(text = "Hello $name!",modifier = modifier)
}@Preview(showBackground = true)
@Composable
fun GreetingPreview() {MyProvision2Theme {Greeting("Android")}
}

3.这里有特殊的权限,需要在system/etc/permissions内配置,我们准备一下权限的xml
com.example.myprovision2.xml

<?xml version="1.0" encoding="utf-8"?>
<!--~ Copyright (C) 2019 The Android Open Source Project~~ Licensed under the Apache License, Version 2.0 (the "License");~ you may not use this file except in compliance with the License.~ You may obtain a copy of the License at~~      http://www.apache.org/licenses/LICENSE-2.0~~ Unless required by applicable law or agreed to in writing, software~ distributed under the License is distributed on an "AS IS" BASIS,~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.~ See the License for the specific language governing permissions and~ limitations under the License-->
<permissions><privapp-permissions package="com.example.myprovision2"><permission name="android.permission.WRITE_SECURE_SETTINGS"/></privapp-permissions>
</permissions>

4.修改Android.bp

android_app_import {name: "MyApp",// this needs to be a privileged applicationprivileged: true,// Make sure the build system doesn't try to resign the APKdex_preopt: {enabled: false,},arch: {arm: {apk: "MyApp.apk",},arm64: {apk: "MyApp.apk",},x86: {apk: "MyApp.apk",},x86_64: {apk: "MyApp.apk",},},certificate: "platform",required: ["MyAppPermissions"],}// 定义 XML 文件复制规则 
prebuilt_etc {name: "MyAppPermissions",      // 模块唯一标识 src: "com.example.myprovision2.xml", // 源文件路径(相对于当前 Android.bp )sub_dir: "permissions",        // 指定 system/etc 下的子目录 filename: "com.example.myprovision2.xml", // 目标文件名(可重命名)}

完成之后我们make MyApp就会自动复制权限xml到对应目录下。

三、验证

我们push apk和xml到对应目录下之后,然后重启设备。这里重启之前还需要重置一下变量

adb shell settings put secure user_setup_complete 0

这样解锁有就可以正常启动我们自定义的开机向导了。

http://www.dtcms.com/wzjs/147040.html

相关文章:

  • 怎么做网页别人可以看到图片凌云seo博客
  • 西固网站建设平台如何在各大网站发布信息
  • 怎么做一个动态网站吗如何做友情链接
  • 网站建设制作设计惠州私域流量营销
  • 无锡网站制作哪里有厦门谷歌seo公司
  • 小型企业做网站的价格产品推广方案ppt
  • 免费网站建设绑定域名seo排名优化首页
  • 石材网站模板上海抖音seo公司
  • 快速做网站用什么软件优化百度seo技术搜索引擎
  • ps网站建设教程视频百度人工服务热线
  • 天眼免费查询个人简述搜索引擎优化的方法
  • 淘宝客网站免费做网页设计效果图及代码
  • 江东外贸seo网站建设seo排名软件免费
  • 网站建设找哪家公司比较好全网搜索软件
  • 网站建设未验收会计账务处理百度拍照搜题
  • wordpress怎么上传源代码长沙竞价优化
  • 高端网站建设需要多少钱中国万网域名查询
  • 网站代营销方案
  • 学校网站建设需求文档快手流量推广免费网站
  • 局网站建设工作总结搜索引擎优化是做什么的
  • 动漫网站开发毕业设计西安高端模板建站
  • 想在淘宝上找网站建设的靠谱吗广告公司网站
  • 单页网站是什么营销培训课程视频
  • 阿里云加WordPress建站杭州seo博客有哪些
  • 免费空间网站长春网站搭建
  • 做的网站手机打不开怎么办免费域名服务器
  • 如何查询网站备案号二级域名查询入口
  • 餐厅网站建设什么在线检测网站安全
  • 商城网站怎么优化seozou是什么意思
  • 开封旅游网站建设网页推广博客网站登录入口