mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
REFACTOR PROJECT STRUCTURE
add testkey
This commit is contained in:
66
Guide.md
66
Guide.md
@@ -1,11 +1,13 @@
|
||||
# 使用指南
|
||||
|
||||
欢迎来到Android owner使用教程
|
||||
欢迎来到OwnDroid使用教程
|
||||
|
||||
在这里了解各个功能所需的权限、兼容的安卓版本和注意事项
|
||||
|
||||
## 目录
|
||||
|
||||
0. [使用前须知](#使用前须知)
|
||||
|
||||
|
||||
1. [权限](#权限)
|
||||
|
||||
@@ -25,6 +27,11 @@
|
||||
|
||||
9. [其他功能](#其他功能)
|
||||
|
||||
## 使用前须知
|
||||
|
||||
1. device admin, profile owner和device owner有极高的特权,包括但不限于让你的设备丢失所有数据。所以,请谨慎使用
|
||||
2. 以下的所有命令都需要在`adb shell`中执行。请进入`adb shell`后执行,不要直接`adb shell xxx`,容易出问题。
|
||||
|
||||
## 权限
|
||||
|
||||
### Device admin
|
||||
@@ -41,7 +48,7 @@
|
||||
|
||||
ADB激活命令:
|
||||
```shell
|
||||
adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver
|
||||
dpm set-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
|
||||
```
|
||||
|
||||
一个设备可以同时存在多个Device admin。
|
||||
@@ -72,7 +79,7 @@ adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.d
|
||||
ADB激活命令:
|
||||
|
||||
```shell
|
||||
adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver
|
||||
dpm set-profile-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
|
||||
```
|
||||
|
||||
#### 停用
|
||||
@@ -97,7 +104,7 @@ adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.
|
||||
ADB激活命令:
|
||||
|
||||
```shell
|
||||
adb shell dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver
|
||||
dpm set-device-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
|
||||
```
|
||||
|
||||
ADB激活有一定局限性
|
||||
@@ -105,13 +112,13 @@ ADB激活有一定局限性
|
||||
激活前必须删除所有用户(user),否则会报错。你可以使用下面这条ADB命令查看已有的用户
|
||||
|
||||
```shell
|
||||
adb shell pm list users
|
||||
pm list users
|
||||
```
|
||||
|
||||
激活前也要删除所有账号(account),否则会报错。你可以使用下面这条ADB命令查看已有的账号
|
||||
|
||||
```shell
|
||||
adb shell dumpsys account
|
||||
dumpsys account
|
||||
```
|
||||
|
||||
上面两个是安卓系统的限制,此外,还有设备生产商的限制
|
||||
@@ -137,7 +144,7 @@ ADB命令停用十分麻烦,你需要修改AndroidManifest.xml并自己编译
|
||||
然后,使用这条ADB命令停用
|
||||
|
||||
```shell
|
||||
adb shell dpm remove-active-admin com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver
|
||||
dpm remove-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
|
||||
```
|
||||
|
||||
使用这条命令也可以停用Device admin和Profile owner
|
||||
@@ -148,7 +155,7 @@ adb shell dpm remove-active-admin com.binbin.androidowner/com.binbin.androidowne
|
||||
|
||||
请自己学习如何启动[Shizuku](https://github.com/RikkaApps/Shizuku)
|
||||
|
||||
如果Shizuku正在运行但是Android owner无法申请权限,请关闭Shizuku和Android owner的电池优化(这种情况在非原生系统中比较常见)
|
||||
如果Shizuku正在运行但是OwnDroid无法申请权限,请关闭Shizuku和OwnDroid的电池优化(这种情况在非原生系统中比较常见)
|
||||
|
||||
功能:
|
||||
|
||||
@@ -162,7 +169,7 @@ Shizuku的本质是ADB。在安卓10或以下,你还是要连接电脑激活Sh
|
||||
|
||||
不能在非主用户中使用
|
||||
|
||||
因为作者懒得研究Shizuku-API,所以Android owner没有添加任何Shizuku相关依赖。以上功能均是通过rish实现。因为是套壳的rish,所以不支持Sui
|
||||
因为作者懒得研究Shizuku-API,所以OwnDroid没有添加任何Shizuku相关依赖。以上功能均是通过rish实现。因为是套壳的rish,所以不支持Sui
|
||||
|
||||
### 设备唯一标识码
|
||||
|
||||
@@ -534,7 +541,7 @@ API34或以上将不能在系统用户中使用WipeData,如果要恢复出厂
|
||||
|
||||
## 工作资料
|
||||
|
||||
工作资料是一种特殊的用户,使用`adb shell pm list user`命令可以看到工作资料,工作资料的默认用户名是“工作资料”或“Work Profile”
|
||||
工作资料是一种特殊的用户,使用`pm list user`命令可以看到工作资料,工作资料的默认用户名是“工作资料”或“Work Profile”
|
||||
|
||||
工作资料创建后默认禁用[安装未知来源应用](#应用)
|
||||
|
||||
@@ -548,9 +555,9 @@ API34或以上将不能在系统用户中使用WipeData,如果要恢复出厂
|
||||
|
||||
- 跳过加密(需要API24或以上,没有实际作用)
|
||||
|
||||
创建后会跳转到工作资料中的Android owner,请立即按照指引激活工作资料
|
||||
创建后会跳转到工作资料中的OwnDroid,请立即按照指引激活工作资料
|
||||
|
||||
创建后工作资料中的Android owner会成为Profile owner
|
||||
创建后工作资料中的OwnDroid会成为Profile owner
|
||||
|
||||
在WearOS上可以创建工作资料,但是会导致SystemUI停止运行一次。WearOS原生的启动器不会显示工作资料中的应用,你需要使用支持工作资料的启动器。你可以通过[ADB命令移除工作资料](#删除工作资料)。此外,不要尝试给工作资料重置密码,因为WearOS不能输入工作资料的密码。(测试环境:WearOS4(AVD))
|
||||
|
||||
@@ -560,15 +567,14 @@ API34或以上将不能在系统用户中使用WipeData,如果要恢复出厂
|
||||
|
||||
成为由组织拥有的工作资料后可以使用更多功能
|
||||
|
||||
前提条件:Android owner是工作资料中的Profile owner
|
||||
前提条件:OwnDroid是工作资料中的Profile owner
|
||||
|
||||
首先,你需要在工作资料中的Android owner的“用户管理”页面中查看UserID
|
||||
首先,你需要在工作资料中的OwnDroid的“用户管理”页面中查看UserID
|
||||
|
||||
然后执行下面这个ADB命令
|
||||
|
||||
```shell
|
||||
adb shell
|
||||
dpm mark-profile-owner-on-organization-owned-device --user USER_ID com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver
|
||||
dpm mark-profile-owner-on-organization-owned-device --user USER_ID com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
|
||||
```
|
||||
|
||||
把命令中的USER_ID替换为你的UserID
|
||||
@@ -579,7 +585,7 @@ dpm mark-profile-owner-on-organization-owned-device --user USER_ID com.binbin.an
|
||||
|
||||
需要的权限:由组织拥有的工作资料的Profile owner
|
||||
|
||||
只会挂起个人的用户应用,系统应用和Android owner仍然可以打开
|
||||
只会挂起个人的用户应用,系统应用和OwnDroid仍然可以打开
|
||||
|
||||
### 资料最长关闭时间
|
||||
|
||||
@@ -611,12 +617,12 @@ dpm mark-profile-owner-on-organization-owned-device --user USER_ID com.binbin.an
|
||||
|
||||
你可以在工作资料中使用 [恢复出厂设置](#恢复出厂设置) 来删除工作资料
|
||||
|
||||
如果你的工作资料不是由组织拥有的,你可以打开安卓设置->安全->更多安全设置->设备管理器->带工作资料图标的Android owner->移除工作资料(非原生用户自己找)
|
||||
如果你的工作资料不是由组织拥有的,你可以打开安卓设置->安全->更多安全设置->设备管理器->带工作资料图标的OwnDroid->移除工作资料(非原生用户自己找)
|
||||
|
||||
你也可以使用ADB命令移除工作资料(把USER_ID替换为工作资料的UserID)
|
||||
|
||||
```shell
|
||||
adb shell pm remove-user USER_ID
|
||||
pm remove-user USER_ID
|
||||
```
|
||||
|
||||
## 应用管理
|
||||
@@ -628,7 +634,7 @@ adb shell pm remove-user USER_ID
|
||||
除了安装应用,所有的操作都需要应用的包名,你可以通过ADB命令查看所有已安装应用的包名
|
||||
|
||||
```shell
|
||||
adb shell pm list packages
|
||||
pm list packages
|
||||
```
|
||||
|
||||
### 应用详情
|
||||
@@ -680,7 +686,7 @@ adb shell pm list packages
|
||||
使用这个ADB命令查看系统支持的所有权限
|
||||
|
||||
```shell
|
||||
adb shell pm list permissions
|
||||
pm list permissions
|
||||
```
|
||||
|
||||
权限有三种状态:
|
||||
@@ -859,7 +865,7 @@ Profile owner无法禁用部分功能,工作资料中部分功能无效,wear
|
||||
使用ADB查看所有用户:
|
||||
|
||||
```shell
|
||||
adb shell pm list users
|
||||
pm list users
|
||||
```
|
||||
|
||||
上面这条命令返回的结果中,用户名前面的数字就是UserID
|
||||
@@ -913,12 +919,12 @@ UserID:不是UID。系统用户的UserID为0,其他用户(包括工作资
|
||||
- 临时用户(需API28)
|
||||
- 启用所有系统应用(有些系统应用在新用户中是默认不启用的,比如谷歌手机上的YouTube)
|
||||
|
||||
创建后,Android owner会成为受管理用户中的Profile owner
|
||||
创建后,OwnDroid会成为受管理用户中的Profile owner
|
||||
|
||||
这个功能在WearOS上使用会导致SystemUI停止运行一次,过几秒恢复正常。创建用户实际上成功了,回到Android owner后能看到新用户的序列号,`pm list users`也能看到新用户。如果切换到新用户,SystemUI无法使用,表现为黑屏(可以用ADB命令启动别的应用)。如果黑屏无法使用,ADB执行下面这个命令(把USER_ID替换成受管理用户的用户序列号)
|
||||
这个功能在WearOS上使用会导致SystemUI停止运行一次,过几秒恢复正常。创建用户实际上成功了,回到OwnDroid后能看到新用户的序列号,`pm list users`也能看到新用户。如果切换到新用户,SystemUI无法使用,表现为黑屏(可以用ADB命令启动别的应用)。如果黑屏无法使用,ADB执行下面这个命令(把USER_ID替换成受管理用户的用户序列号)
|
||||
|
||||
```shell
|
||||
adb shell pm remove-user --set-ephemeral-if-in-use USER_ID
|
||||
pm remove-user --set-ephemeral-if-in-use USER_ID
|
||||
```
|
||||
|
||||
新用户会被设为临时用户,重启后临时用户会被删除并切换到主用户
|
||||
@@ -1009,7 +1015,7 @@ Device owner无论在何时都是附属于设备的用户
|
||||
|
||||
需要Device owner
|
||||
|
||||
输入密码错误次数达到限制后会恢复出厂设置(前提是Android owner有权限恢复出厂设置)
|
||||
输入密码错误次数达到限制后会恢复出厂设置(前提是OwnDroid有权限恢复出厂设置)
|
||||
|
||||
### 密码失效超时时间
|
||||
|
||||
@@ -1060,7 +1066,7 @@ Device owner无论在何时都是附属于设备的用户
|
||||
|
||||
自定义的项目:
|
||||
|
||||
- 禁用小工具(API21或以上弃用,Android owner的最小兼容API版本21,所以这个功能没用)
|
||||
- 禁用小工具(API21或以上弃用,OwnDroid的最小兼容API版本21,所以这个功能没用)
|
||||
- 禁用相机
|
||||
- 禁用通知(不知道是否包含音乐播放器)
|
||||
- 禁用未经编辑的通知(作用未知)
|
||||
@@ -1095,7 +1101,7 @@ API31及以上弃用,请使用[密码复杂度要求](#密码复杂度要求)
|
||||
|
||||
正在修改,预计在5.0版本重新加入。
|
||||
|
||||
在Android owner的设置中打开
|
||||
在OwnDroid的设置中打开
|
||||
|
||||
适配手表的屏幕大小,添加一些WearOS/AndroidWear相关的提示,比如[密码与锁屏](#密码与锁屏)
|
||||
|
||||
@@ -1105,8 +1111,8 @@ API31及以上弃用,请使用[密码复杂度要求](#密码复杂度要求)
|
||||
|
||||
在安卓12或以上此功能默认打开
|
||||
|
||||
打开后Android owner中的颜色方案将会跟随系统
|
||||
打开后OwnDroid中的颜色方案将会跟随系统
|
||||
|
||||
建议打开,因为自带的颜色方案不好看
|
||||
|
||||
打开或关闭此功能都要重启Android owner
|
||||
打开或关闭此功能都要重启OwnDroid
|
||||
|
||||
@@ -4,11 +4,11 @@ plugins {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.binbin.androidowner"
|
||||
namespace = "com.bintianqi.owndroid"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.binbin.androidowner"
|
||||
applicationId = "com.bintianqi.owndroid"
|
||||
minSdk = 21
|
||||
targetSdk = 34
|
||||
versionCode = 24
|
||||
|
||||
@@ -25,29 +25,28 @@
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:theme="@style/Theme.AndroidOwner"
|
||||
android:theme="@style/Theme.OwnDroid"
|
||||
android:enableOnBackInvokedCallback="true"
|
||||
android:testOnly="false"
|
||||
android:testOnly="true"
|
||||
tools:targetApi="34">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:windowSoftInputMode="adjustResize|stateHidden"
|
||||
android:theme="@style/Theme.AndroidOwner">
|
||||
android:theme="@style/Theme.OwnDroid">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<action android:name="android.app.action.PROVISIONING_SUCCESSFUL" />
|
||||
<action android:name="android.app.action.PROVISION_MANAGED_PROFILE"/>
|
||||
<action android:name="android.app.action.MANAGED_PROFILE_PROVISIONED"/>
|
||||
<action android:name="android.app.action.PROFILE_PROVISIONING_COMPLETE"/>
|
||||
<action android:name="com.binbin.androidowner.MAIN_ACTION"/>
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<receiver
|
||||
android:name=".dpm.MyDeviceAdminReceiver"
|
||||
android:name=".Receiver"
|
||||
android:description="@string/app_name"
|
||||
android:permission="android.permission.BIND_DEVICE_ADMIN"
|
||||
android:exported="true">
|
||||
@@ -65,12 +64,12 @@
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name=".dpm.PackageInstallerReceiver"
|
||||
android:name=".PackageInstallerReceiver"
|
||||
android:description="@string/app_name"
|
||||
android:permission="android.permission.BIND_DEVICE_ADMIN"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.binbin.androidowner.PKG_INSTALL_RESULT"/>
|
||||
<action android:name="com.bintianqi.owndroid.PKG_INSTALL_RESULT"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/system/bin/sh
|
||||
BASEDIR=$(dirname "$0")
|
||||
DEX="$BASEDIR"/rish_shizuku.dex
|
||||
[ -z "$RISH_APPLICATION_ID" ] && export RISH_APPLICATION_ID="com.binbin.androidowner"
|
||||
[ -z "$RISH_APPLICATION_ID" ] && export RISH_APPLICATION_ID="com.bintianqi.owndroid"
|
||||
/system/bin/app_process -Djava.class.path="$DEX" /system/bin --nice-name=rish rikka.shizuku.shell.ShizukuShellLoader "$@"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner
|
||||
package com.bintianqi.owndroid
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -40,11 +40,11 @@ import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.dpm.*
|
||||
import com.binbin.androidowner.ui.Animations
|
||||
import com.binbin.androidowner.ui.theme.OwnDroidTheme
|
||||
import com.binbin.androidowner.ui.theme.SetDarkTheme
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.dpm.*
|
||||
import com.bintianqi.owndroid.ui.Animations
|
||||
import com.bintianqi.owndroid.ui.theme.OwnDroidTheme
|
||||
import com.bintianqi.owndroid.ui.theme.SetDarkTheme
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
lateinit var displayMetrics: DisplayMetrics
|
||||
@ExperimentalMaterial3Api
|
||||
@@ -82,7 +82,7 @@ fun MyScaffold(){
|
||||
val navCtrl = rememberNavController()
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
SetDarkTheme()
|
||||
@@ -127,7 +127,7 @@ fun MyScaffold(){
|
||||
private fun HomePage(navCtrl:NavHostController){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val activateType =
|
||||
if(isDeviceOwner(myDpm)){"Device Owner"}
|
||||
else if(isProfileOwner(myDpm)){
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner
|
||||
package com.bintianqi.owndroid
|
||||
|
||||
import android.Manifest
|
||||
import android.os.Build.VERSION
|
||||
@@ -14,10 +14,10 @@ import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavHostController
|
||||
import com.binbin.androidowner.dpm.applySelectedPermission
|
||||
import com.binbin.androidowner.dpm.selectedPermission
|
||||
import com.binbin.androidowner.ui.NavIcon
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.dpm.applySelectedPermission
|
||||
import com.bintianqi.owndroid.dpm.selectedPermission
|
||||
import com.bintianqi.owndroid.ui.NavIcon
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner
|
||||
package com.bintianqi.owndroid
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.widget.Toast
|
||||
@@ -21,10 +21,10 @@ import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavHostController
|
||||
import com.binbin.androidowner.dpm.applySelectedPackage
|
||||
import com.binbin.androidowner.dpm.selectedPackage
|
||||
import com.binbin.androidowner.ui.NavIcon
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.dpm.applySelectedPackage
|
||||
import com.bintianqi.owndroid.dpm.selectedPackage
|
||||
import com.bintianqi.owndroid.ui.NavIcon
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
import com.google.accompanist.drawablepainter.rememberDrawablePainter
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -57,7 +57,7 @@ fun PackageSelector(navCtrl:NavHostController){
|
||||
pkgs.clear()
|
||||
for(pkg in apps){
|
||||
val srcDir = pkg.sourceDir
|
||||
pkgs+=PkgInfo(
|
||||
pkgs += PkgInfo(
|
||||
pkg.packageName, pkg.loadLabel(pm).toString(), pkg.loadIcon(pm),
|
||||
if(srcDir.contains("/data/")){ "data" }
|
||||
else if(
|
||||
@@ -168,12 +168,12 @@ fun PackageSelector(navCtrl:NavHostController){
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun PackageItem(pkg:PkgInfo, navCtrl: NavHostController){
|
||||
private fun PackageItem(pkg: PkgInfo, navCtrl: NavHostController){
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clickable{selectedPackage=pkg.pkgName;applySelectedPackage=true;navCtrl.navigateUp()}
|
||||
.clickable{selectedPackage =pkg.pkgName;applySelectedPackage =true;navCtrl.navigateUp()}
|
||||
.padding(vertical = 3.dp)
|
||||
){
|
||||
Spacer(Modifier.padding(start = 15.dp))
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DeviceAdminReceiver
|
||||
@@ -11,7 +11,7 @@ import android.os.PersistableBundle
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
|
||||
class MyDeviceAdminReceiver : DeviceAdminReceiver() {
|
||||
class Receiver : DeviceAdminReceiver() {
|
||||
override fun onEnabled(context: Context, intent: Intent) {
|
||||
super.onEnabled(context, intent)
|
||||
Toast.makeText(context, "已启用", Toast.LENGTH_SHORT).show()
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner
|
||||
package com.bintianqi.owndroid
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -24,9 +24,9 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.SetDarkTheme
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.SetDarkTheme
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
@Composable
|
||||
fun AppSetting(navCtrl:NavHostController){
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner
|
||||
package com.bintianqi.owndroid
|
||||
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.PendingIntent
|
||||
@@ -49,11 +49,10 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.toText
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.binbin.androidowner.uriToStream
|
||||
import com.bintianqi.owndroid.*
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
import kotlinx.coroutines.delay
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
@@ -153,7 +152,7 @@ private fun Home(navCtrl:NavHostController, pkgName: String){
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
if(VERSION.SDK_INT>=24&&isProfileOwner(myDpm)&&myDpm.isManagedProfile(myComponent)){
|
||||
Text(text = stringResource(R.string.scope_is_work_profile), textAlign = TextAlign.Center,modifier = Modifier.fillMaxWidth())
|
||||
@@ -186,7 +185,7 @@ private fun Home(navCtrl:NavHostController, pkgName: String){
|
||||
{
|
||||
try {
|
||||
myDpm.setAlwaysOnVpnPackage(myComponent, pkgName, it)
|
||||
} catch(e: java.lang.UnsupportedOperationException) {
|
||||
} catch(e: UnsupportedOperationException) {
|
||||
Toast.makeText(myContext, myContext.getString(R.string.unsupported), Toast.LENGTH_SHORT).show()
|
||||
} catch(e: NameNotFoundException) {
|
||||
Toast.makeText(myContext, myContext.getString(R.string.not_installed), Toast.LENGTH_SHORT).show()
|
||||
@@ -238,7 +237,7 @@ private fun Home(navCtrl:NavHostController, pkgName: String){
|
||||
private fun UserCtrlDisabledPkg(pkgName:String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
var pkgList = myDpm.getUserControlDisabledPackages(myComponent)
|
||||
var listText by remember{mutableStateOf("")}
|
||||
@@ -302,7 +301,7 @@ private fun UserCtrlDisabledPkg(pkgName:String){
|
||||
private fun BlockUninstall(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
var state by remember{mutableStateOf(myDpm.isUninstallBlocked(myComponent,pkgName))}
|
||||
@@ -346,7 +345,7 @@ private fun BlockUninstall(pkgName: String){
|
||||
private fun PermissionManage(pkgName: String, navCtrl: NavHostController){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var inputPermission by remember{mutableStateOf(selectedPermission)}
|
||||
var currentState by remember{mutableStateOf(myContext.getString(R.string.unknown))}
|
||||
@@ -427,7 +426,7 @@ private fun PermissionManage(pkgName: String, navCtrl: NavHostController){
|
||||
private fun CrossProfilePkg(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.cross_profile_package), style = typography.headlineLarge)
|
||||
@@ -444,7 +443,8 @@ private fun CrossProfilePkg(pkgName: String){
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){
|
||||
Button(
|
||||
onClick = {
|
||||
if(pkgName!=""){crossProfilePkg.add(pkgName)}
|
||||
if(pkgName!=""){
|
||||
crossProfilePkg.add(pkgName)}
|
||||
myDpm.setCrossProfilePackages(myComponent, crossProfilePkg)
|
||||
refresh()
|
||||
},
|
||||
@@ -454,7 +454,8 @@ private fun CrossProfilePkg(pkgName: String){
|
||||
}
|
||||
Button(
|
||||
onClick = {
|
||||
if(pkgName!=""){crossProfilePkg.remove(pkgName)}
|
||||
if(pkgName!=""){
|
||||
crossProfilePkg.remove(pkgName)}
|
||||
myDpm.setCrossProfilePackages(myComponent, crossProfilePkg)
|
||||
refresh()
|
||||
},
|
||||
@@ -471,7 +472,7 @@ private fun CrossProfilePkg(pkgName: String){
|
||||
private fun CrossProfileWidget(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
var pkgList: MutableList<String>
|
||||
var list by remember{mutableStateOf("")}
|
||||
@@ -547,7 +548,8 @@ private fun CredentialManagePolicy(pkgName: String){
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){
|
||||
Button(
|
||||
onClick = {
|
||||
if(pkgName!=""){credentialList.add(pkgName)}
|
||||
if(pkgName!=""){
|
||||
credentialList.add(pkgName)}
|
||||
credentialListText = credentialList.toText()
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(0.49F)
|
||||
@@ -556,7 +558,8 @@ private fun CredentialManagePolicy(pkgName: String){
|
||||
}
|
||||
Button(
|
||||
onClick = {
|
||||
if(pkgName!=""){credentialList.remove(pkgName)}
|
||||
if(pkgName!=""){
|
||||
credentialList.remove(pkgName)}
|
||||
credentialListText = credentialList.toText()
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(0.96F)
|
||||
@@ -571,7 +574,7 @@ private fun CredentialManagePolicy(pkgName: String){
|
||||
focusMgr.clearFocus()
|
||||
try{
|
||||
if(policyType!=-1&&credentialList.isNotEmpty()){
|
||||
myDpm.credentialManagerPolicy = PackagePolicy(policyType,credentialList)
|
||||
myDpm.credentialManagerPolicy = PackagePolicy(policyType, credentialList)
|
||||
}else{
|
||||
myDpm.credentialManagerPolicy = null
|
||||
}
|
||||
@@ -595,7 +598,7 @@ private fun CredentialManagePolicy(pkgName: String){
|
||||
private fun PermittedAccessibility(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -646,7 +649,7 @@ private fun PermittedAccessibility(pkgName: String){
|
||||
private fun PermittedIME(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -698,7 +701,7 @@ private fun PermittedIME(pkgName: String){
|
||||
private fun KeepUninstalledApp(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -762,7 +765,7 @@ private fun UninstallApp(pkgName: String){
|
||||
Column(modifier = Modifier.fillMaxWidth()){
|
||||
Button(
|
||||
onClick = {
|
||||
val intent = Intent(myContext,PackageInstallerReceiver::class.java)
|
||||
val intent = Intent(myContext, PackageInstallerReceiver::class.java)
|
||||
val intentSender = PendingIntent.getBroadcast(myContext, 8, intent, PendingIntent.FLAG_IMMUTABLE).intentSender
|
||||
val pkgInstaller = myContext.packageManager.packageInstaller
|
||||
pkgInstaller.uninstall(pkgName, intentSender)
|
||||
@@ -837,7 +840,7 @@ private fun InstallApp(){
|
||||
private fun ClearAppData(pkgName: String){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -898,6 +901,6 @@ private fun installPackage(context: Context, inputStream: InputStream){
|
||||
session.fsync(out)
|
||||
inputStream.close()
|
||||
out.close()
|
||||
val pendingIntent = PendingIntent.getBroadcast(context, sessionId, Intent(context,PackageInstallerReceiver::class.java), PendingIntent.FLAG_IMMUTABLE).intentSender
|
||||
val pendingIntent = PendingIntent.getBroadcast(context, sessionId, Intent(context, PackageInstallerReceiver::class.java), PendingIntent.FLAG_IMMUTABLE).intentSender
|
||||
session.commit(pendingIntent)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.content.Intent
|
||||
@@ -19,10 +19,10 @@ var apkUri: Uri? = null
|
||||
var caCert = byteArrayOf()
|
||||
|
||||
fun isDeviceOwner(dpm: DevicePolicyManager): Boolean {
|
||||
return dpm.isDeviceOwnerApp("com.binbin.androidowner")
|
||||
return dpm.isDeviceOwnerApp("com.bintianqi.owndroid")
|
||||
}
|
||||
|
||||
fun isProfileOwner(dpm: DevicePolicyManager): Boolean {
|
||||
return dpm.isProfileOwnerApp("com.binbin.androidowner")
|
||||
return dpm.isProfileOwnerApp("com.bintianqi.owndroid")
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -33,9 +33,10 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
@Composable
|
||||
fun ManagedProfile(navCtrl: NavHostController) {
|
||||
@@ -80,7 +81,7 @@ fun ManagedProfile(navCtrl: NavHostController) {
|
||||
private fun Home(navCtrl: NavHostController){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){
|
||||
Text(text = stringResource(R.string.work_profile), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
|
||||
if(VERSION.SDK_INT>=30&&isProfileOwner(myDpm)&&myDpm.isManagedProfile(myComponent)){
|
||||
@@ -105,13 +106,15 @@ private fun Home(navCtrl: NavHostController){
|
||||
@Composable
|
||||
private fun CreateWorkProfile(){
|
||||
val myContext = LocalContext.current
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.create_work_profile), style = typography.headlineLarge)
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
var skipEncrypt by remember{mutableStateOf(false)}
|
||||
if(VERSION.SDK_INT>=24){CheckBoxItem(stringResource(R.string.skip_encryption),{skipEncrypt},{skipEncrypt=!skipEncrypt})}
|
||||
if(VERSION.SDK_INT>=24){
|
||||
CheckBoxItem(stringResource(R.string.skip_encryption),{skipEncrypt},{skipEncrypt=!skipEncrypt})
|
||||
}
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
Button(
|
||||
onClick = {
|
||||
@@ -202,7 +205,7 @@ private fun OrgID(){
|
||||
private fun SuspendPersonalApp(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -239,7 +242,7 @@ private fun SuspendPersonalApp(){
|
||||
private fun IntentFilter(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
var action by remember{mutableStateOf("")}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -41,10 +41,12 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.toText
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.dpm.scrollAnim
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.toText
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
var ssidSet = mutableSetOf<WifiSsid>()
|
||||
@Composable
|
||||
@@ -102,7 +104,7 @@ fun Network(navCtrl: NavHostController){
|
||||
private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
|
||||
Text(text = stringResource(R.string.network), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
|
||||
if(VERSION.SDK_INT>=24&&isDeviceOwner(myDpm)){
|
||||
@@ -139,7 +141,7 @@ private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
|
||||
private fun Switches(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize()){
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
if(VERSION.SDK_INT>=33&&isDeviceOwner(myDpm)){
|
||||
@@ -200,7 +202,7 @@ private fun WifiSsidPolicy(){
|
||||
selectedPolicyType = policy?.policyType ?: -1
|
||||
ssidSet = policy?.ssids ?: mutableSetOf()
|
||||
}
|
||||
LaunchedEffect(Unit){refreshPolicy(); ssidList=ssidSet.toText()}
|
||||
LaunchedEffect(Unit){refreshPolicy(); ssidList= ssidSet.toText()}
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.wifi_ssid_policy), style = typography.headlineLarge)
|
||||
Spacer(Modifier.padding(vertical = 5.dp))
|
||||
@@ -290,7 +292,7 @@ private fun WifiSsidPolicy(){
|
||||
private fun PrivateDNS(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -360,7 +362,7 @@ private fun PrivateDNS(){
|
||||
private fun NetLog(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.retrieve_net_logs), style = typography.headlineLarge)
|
||||
@@ -438,7 +440,7 @@ private fun WifiKeypair(){
|
||||
private fun APN(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
val setting = myDpm.getOverrideApns(myComponent)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.KeyguardManager
|
||||
@@ -33,9 +33,10 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
@Composable
|
||||
fun Password(navCtrl: NavHostController){
|
||||
@@ -120,7 +121,7 @@ private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
|
||||
private fun PasswordInfo(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.password_info), style = typography.headlineLarge)
|
||||
@@ -152,7 +153,7 @@ private fun PasswordInfo(){
|
||||
private fun ResetPasswordToken(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val myByteArray by remember{ mutableStateOf(byteArrayOf(1,1,4,5,1,4,1,9,1,9,8,1,0,1,1,4,5,1,4,1,9,1,9,8,1,0,1,1,4,5,1,4,1,9,1,9,8,1,0)) }
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -206,7 +207,7 @@ private fun ResetPasswordToken(){
|
||||
private fun ResetPassword(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var newPwd by remember{ mutableStateOf("") }
|
||||
val myByteArray by remember{ mutableStateOf(byteArrayOf(1,1,4,5,1,4,1,9,1,9,8,1,0,1,1,4,5,1,4,1,9,1,9,8,1,0,1,1,4,5,1,4,1,9,1,9,8,1,0)) }
|
||||
@@ -334,7 +335,7 @@ private fun PasswordComplexity(){
|
||||
private fun ScreenTimeout(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var inputContent by remember{ mutableStateOf(if(isDeviceOwner(myDpm)){myDpm.getMaximumTimeToLock(myComponent).toString()}else{""}) }
|
||||
var ableToApply by remember{ mutableStateOf(inputContent!="") }
|
||||
@@ -370,7 +371,7 @@ private fun ScreenTimeout(){
|
||||
private fun MaxFailedPasswordForWipe(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var inputContent by remember{ mutableStateOf(if(isDeviceOwner(myDpm)){myDpm.getMaximumFailedPasswordsForWipe(myComponent).toString()}else{""}) }
|
||||
var ableToApply by remember{ mutableStateOf(inputContent!=""&&inputContent!="0") }
|
||||
@@ -406,7 +407,7 @@ private fun MaxFailedPasswordForWipe(){
|
||||
private fun PasswordExpiration(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var inputContent by remember{ mutableStateOf(if(isDeviceOwner(myDpm)){myDpm.getPasswordExpirationTimeout(myComponent).toString()}else{""}) }
|
||||
var ableToApply by remember{ mutableStateOf(inputContent!="") }
|
||||
@@ -442,7 +443,7 @@ private fun PasswordExpiration(){
|
||||
private fun PasswordHistoryLength(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var inputContent by remember{ mutableStateOf(if(isDeviceOwner(myDpm)){myDpm.getPasswordHistoryLength(myComponent).toString()}else{""}) }
|
||||
var ableToApply by remember{ mutableStateOf(inputContent!="") }
|
||||
@@ -478,7 +479,7 @@ private fun PasswordHistoryLength(){
|
||||
private fun KeyguardDisabledFeatures(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
var state by remember{mutableIntStateOf(-1)}
|
||||
var shortcuts by remember{mutableStateOf(false)}
|
||||
var biometrics by remember{mutableStateOf(false)}
|
||||
@@ -576,7 +577,7 @@ private fun KeyguardDisabledFeatures(){
|
||||
private fun PasswordQuality(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val passwordQuality = mapOf(
|
||||
PASSWORD_QUALITY_UNSPECIFIED to stringResource(R.string.password_quality_unspecified),
|
||||
PASSWORD_QUALITY_SOMETHING to stringResource(R.string.password_quality_something),
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -33,9 +33,10 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -103,7 +104,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
||||
private fun Home(localNavCtrl:NavHostController,listScrollState:ScrollState){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(listScrollState)) {
|
||||
Text(text = stringResource(R.string.permission), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
|
||||
SubPageItem(
|
||||
@@ -147,7 +148,7 @@ private fun Home(localNavCtrl:NavHostController,listScrollState:ScrollState){
|
||||
private fun LockScreenInfo(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var infoText by remember{mutableStateOf(myDpm.deviceOwnerLockScreenInfo?.toString() ?: "")}
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){
|
||||
@@ -185,7 +186,7 @@ private fun LockScreenInfo(){
|
||||
private fun DeviceAdmin(navCtrl: NavHostController){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val co = rememberCoroutineScope()
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -223,7 +224,7 @@ private fun DeviceAdmin(navCtrl: NavHostController){
|
||||
private fun ProfileOwner(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.profile_owner), style = typography.headlineLarge)
|
||||
@@ -349,7 +350,7 @@ private fun SpecificID(){
|
||||
private fun OrgName(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){
|
||||
var orgName by remember{mutableStateOf(try{myDpm.getOrganizationName(myComponent).toString()}catch(e:SecurityException){""})}
|
||||
@@ -381,7 +382,7 @@ private fun OrgName(){
|
||||
private fun SupportMsg(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var shortMsg by remember{mutableStateOf(myDpm.getShortSupportMessage(myComponent)?.toString() ?: "")}
|
||||
var longMsg by remember{mutableStateOf(myDpm.getLongSupportMessage(myComponent)?.toString() ?: "")}
|
||||
@@ -436,7 +437,7 @@ private fun SupportMsg(){
|
||||
private fun NoManageAccount(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -490,7 +491,7 @@ private fun NoManageAccount(){
|
||||
private fun TransformOwnership(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
val focusRequester = FocusRequester()
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).padding(horizontal = 8.dp)){
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.content.ComponentName
|
||||
@@ -35,7 +35,8 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.binbin.androidowner.R
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -46,7 +47,7 @@ import java.io.*
|
||||
fun ShizukuActivate(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
val filesDir = myContext.filesDir
|
||||
LaunchedEffect(Unit){ extractRish(myContext) }
|
||||
@@ -88,7 +89,7 @@ fun ShizukuActivate(){
|
||||
Button(
|
||||
onClick = {
|
||||
coScope.launch{
|
||||
outputText=executeCommand(myContext, "sh rish.sh","dpm list-owners",null,filesDir)
|
||||
outputText= executeCommand(myContext, "sh rish.sh","dpm list-owners",null,filesDir)
|
||||
scrollState.animateScrollTo(scrollState.maxValue, scrollAnim())
|
||||
outputTextScrollState.animateScrollTo(0, scrollAnim())
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -41,10 +41,11 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.toText
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.toText
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
import kotlinx.coroutines.delay
|
||||
import java.util.Date
|
||||
|
||||
@@ -151,7 +152,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
|
||||
}
|
||||
SubPageItem(R.string.wipe_data,"",R.drawable.warning_fill0){navCtrl.navigate("WipeData")}
|
||||
Spacer(Modifier.padding(vertical = 30.dp))
|
||||
LaunchedEffect(Unit){caCert=byteArrayOf()}
|
||||
LaunchedEffect(Unit){caCert =byteArrayOf()}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +160,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
|
||||
private fun Switches(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
|
||||
@@ -229,7 +230,7 @@ private fun Switches(){
|
||||
private fun Keyguard(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.keyguard), style = typography.headlineLarge)
|
||||
@@ -277,7 +278,7 @@ private fun Keyguard(){
|
||||
private fun BugReport(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp)){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Button(
|
||||
@@ -298,7 +299,7 @@ private fun BugReport(){
|
||||
private fun Reboot(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp)){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Button(
|
||||
@@ -316,7 +317,7 @@ private fun Reboot(){
|
||||
private fun EditTime(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -356,7 +357,7 @@ private fun EditTime(){
|
||||
private fun PermissionPolicy(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
var selectedPolicy by remember{mutableIntStateOf(myDpm.getPermissionPolicy(myComponent))}
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -462,7 +463,7 @@ private fun NearbyStreamingPolicy(){
|
||||
private fun LockTaskFeatures(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
val lockTaskPolicyList = mutableListOf(
|
||||
@@ -595,7 +596,7 @@ private fun LockTaskFeatures(){
|
||||
private fun CaCert(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
var exist by remember{mutableStateOf(false)}
|
||||
var isEmpty by remember{mutableStateOf(true)}
|
||||
val refresh = {
|
||||
@@ -663,7 +664,7 @@ private fun CaCert(){
|
||||
private fun SecurityLogs(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
Text(text = stringResource(R.string.security_logs), style = typography.headlineLarge)
|
||||
@@ -708,7 +709,7 @@ private fun WipeData(){
|
||||
val myContext = LocalContext.current
|
||||
val userManager = myContext.getSystemService(Context.USER_SERVICE) as UserManager
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
var flag by remember{ mutableIntStateOf(0) }
|
||||
@@ -794,7 +795,7 @@ private fun WipeData(){
|
||||
private fun SysUpdatePolicy(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
val sharedPref = myContext.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||
val isWear = sharedPref.getBoolean("isWear",false)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -20,8 +20,11 @@ import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.foundation.text.selection.SelectionContainer
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.MaterialTheme.typography
|
||||
import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
@@ -37,11 +40,12 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.toText
|
||||
import com.binbin.androidowner.ui.*
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.binbin.androidowner.uriToStream
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.toText
|
||||
import com.bintianqi.owndroid.ui.*
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.uriToStream
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
var affiliationID = mutableSetOf<String>()
|
||||
@@ -125,7 +129,7 @@ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
|
||||
private fun CurrentUserInfo(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
val userManager = myContext.getSystemService(Context.USER_SERVICE) as UserManager
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -157,7 +161,7 @@ private fun UserOperation(){
|
||||
val myContext = LocalContext.current
|
||||
val userManager = myContext.getSystemService(Context.USER_SERVICE) as UserManager
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
Spacer(Modifier.padding(vertical = 10.dp))
|
||||
@@ -272,7 +276,7 @@ private fun CreateUser(){
|
||||
val myContext = LocalContext.current
|
||||
val userManager = myContext.getSystemService(Context.USER_SERVICE) as UserManager
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var userName by remember{ mutableStateOf("") }
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
@@ -319,7 +323,7 @@ private fun CreateUser(){
|
||||
private fun AffiliationID(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var input by remember{mutableStateOf("")}
|
||||
var list by remember{mutableStateOf("")}
|
||||
@@ -387,7 +391,7 @@ private fun AffiliationID(){
|
||||
private fun Username(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
var inputUsername by remember{mutableStateOf("")}
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
@@ -431,7 +435,7 @@ private fun Username(){
|
||||
private fun UserSessionMessage(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
val focusMgr = LocalFocusManager.current
|
||||
val getStart = myDpm.getStartUserSessionMessage(myComponent)?:""
|
||||
val getEnd = myDpm.getEndUserSessionMessage(myComponent)?:""
|
||||
@@ -492,7 +496,7 @@ private fun UserSessionMessage(){
|
||||
private fun UserIcon(){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
var getContent by remember{mutableStateOf(false)}
|
||||
var canApply by remember{mutableStateOf(false)}
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp).verticalScroll(rememberScrollState())){
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.dpm
|
||||
package com.bintianqi.owndroid.dpm
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
@@ -33,12 +33,13 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.ui.Animations
|
||||
import com.binbin.androidowner.ui.SubPageItem
|
||||
import com.binbin.androidowner.ui.SwitchItem
|
||||
import com.binbin.androidowner.ui.TopBar
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.Receiver
|
||||
import com.bintianqi.owndroid.ui.Animations
|
||||
import com.bintianqi.owndroid.ui.SubPageItem
|
||||
import com.bintianqi.owndroid.ui.SwitchItem
|
||||
import com.bintianqi.owndroid.ui.TopBar
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
|
||||
private data class Restriction(
|
||||
val restriction:String,
|
||||
@@ -100,7 +101,7 @@ fun UserRestriction(navCtrl: NavHostController){
|
||||
private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext, Receiver::class.java)
|
||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
|
||||
Text(text = stringResource(R.string.user_restrict), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 7.dp, start = 15.dp))
|
||||
Text(text = stringResource(R.string.switch_to_disable_feature), modifier = Modifier.padding(start = 15.dp))
|
||||
@@ -192,7 +193,7 @@ private fun UserRestrictionItem(
|
||||
){
|
||||
val myContext = LocalContext.current
|
||||
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
|
||||
val myComponent = ComponentName(myContext,Receiver::class.java)
|
||||
SwitchItem(
|
||||
itemName,restrictionDescription,leadIcon,
|
||||
{ if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){ myDpm.getUserRestrictions(myComponent).getBoolean(restriction) }else{ false } },
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.ui
|
||||
package com.bintianqi.owndroid.ui
|
||||
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.animation.core.FiniteAnimationSpec
|
||||
@@ -8,7 +8,7 @@ import androidx.compose.animation.core.spring
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import androidx.compose.ui.unit.IntSize
|
||||
import androidx.navigation.NavBackStackEntry
|
||||
import com.binbin.androidowner.displayMetrics
|
||||
import com.bintianqi.owndroid.displayMetrics
|
||||
|
||||
class Animations{
|
||||
private val fade: FiniteAnimationSpec<Float> = spring(stiffness = Spring.StiffnessMediumLow)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.ui
|
||||
package com.bintianqi.owndroid.ui
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.Toast
|
||||
@@ -22,9 +22,9 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavBackStackEntry
|
||||
import androidx.navigation.NavHostController
|
||||
import com.binbin.androidowner.R
|
||||
import com.binbin.androidowner.ui.theme.bgColor
|
||||
import com.binbin.androidowner.writeClipBoard
|
||||
import com.bintianqi.owndroid.R
|
||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
||||
import com.bintianqi.owndroid.writeClipBoard
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.ui.theme
|
||||
package com.bintianqi.owndroid.ui.theme
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.ui.theme
|
||||
package com.bintianqi.owndroid.ui.theme
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.binbin.androidowner.ui.theme
|
||||
package com.bintianqi.owndroid.ui.theme
|
||||
|
||||
import androidx.compose.material3.Typography
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
@@ -1 +1 @@
|
||||
unqualifiedResLocale=en
|
||||
unqualifiedResLocale=en-US
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.AndroidOwner" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<style name="Theme.OwnDroid" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<item name="android:windowSplashScreenBackground">#000000</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.AndroidOwner" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<style name="Theme.OwnDroid" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<item name="android:windowSplashScreenBackground">#F1F5F4</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -47,9 +47,6 @@
|
||||
<string name="profile_owner">Profile owner</string>
|
||||
<string name="device_owner">Device owner</string>
|
||||
<string name="activate_device_admin">激活Device admin</string>
|
||||
<string name="activate_device_admin_command">adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="activate_profile_owner_command">adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="activate_device_owner_command">adb shell dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="device_info">设备信息</string>
|
||||
<string name="is_device_financed">Financed device: %1$s</string>
|
||||
<string name="dpmrh">设备策略管理器角色(DPMRH):%1$s</string>
|
||||
@@ -50,9 +50,9 @@
|
||||
<string name="profile_owner">Profile owner</string>
|
||||
<string name="device_owner">Device owner</string>
|
||||
<string name="activate_device_admin">Activate Device admin</string>
|
||||
<string name="activate_device_admin_command">adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="activate_profile_owner_command">adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="activate_device_owner_command">adb shell dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="activate_device_admin_command" translatable="false">adb shell dpm set-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||
<string name="activate_profile_owner_command" translatable="false">adb shell dpm set-profile-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||
<string name="activate_device_owner_command" translatable="false">adb shell dpm set-device-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||
<string name="device_info">Device info</string>
|
||||
<string name="is_device_financed">Financed device: %1$s</string>
|
||||
<string name="dpmrh">Device policy manager role holder:%1$s</string>
|
||||
@@ -88,11 +88,11 @@
|
||||
<string name="list_owners">List owners</string>
|
||||
<string name="shizuku_not_started">Shizuku not started. </string>
|
||||
<string name="activate_org_profile_command_with_user_id" tools:ignore="TypographyDashes" translatable="false">
|
||||
dpm mark-profile-owner-on-organization-owned-device --user %1$s com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver
|
||||
dpm mark-profile-owner-on-organization-owned-device --user %1$s com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
|
||||
</string>
|
||||
<string name="dpm_activate_do_command" translatable="false">dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="dpm_activate_po_command" translatable="false">dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="dpm_activate_da_command" translatable="false">dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver</string>
|
||||
<string name="dpm_activate_do_command" translatable="false">dpm set-device-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||
<string name="dpm_activate_po_command" translatable="false">dpm set-profile-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||
<string name="dpm_activate_da_command" translatable="false">dpm set-active-admin com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver</string>
|
||||
<string name="shizuku_activated_shell">Permission granted (Shell)</string>
|
||||
<string name="shizuku_activated_root">Permission granted (Root)</string>
|
||||
<string name="activate_profile_owner">Activate profile owner</string>
|
||||
@@ -222,7 +222,7 @@
|
||||
<string name="is_org_owned_profile">Organization owned work profile: %1$s</string>
|
||||
<string name="org_owned_work_profile">Organization work profile</string>
|
||||
<string name="activate_org_profile_command" tools:ignore="TypographyDashes" translatable="false">
|
||||
adb shell \"dpm mark-profile-owner-on-organization-owned-device --user %1$s com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver\"
|
||||
adb shell \"dpm mark-profile-owner-on-organization-owned-device --user %1$s com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver\"
|
||||
</string>
|
||||
<string name="skip_encryption">Skip encryption</string>
|
||||
<string name="create">Create</string>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.AndroidOwner" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<style name="Theme.OwnDroid" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<item name="android:navigationBarColor">#FFFFFF</item>
|
||||
<item name="android:statusBarColor">#FFFFFF</item>
|
||||
<item name="android:windowSwipeToDismiss">true</item>
|
||||
|
||||
2
signature/signRelease-testkey.bat
Normal file
2
signature/signRelease-testkey.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
apksigner sign --key testkey.pk8 --cert testkey.x509.pem ..\app\build\outputs\apk\release\app-release-unsigned.apk
|
||||
ren ..\app\build\outputs\apk\release\app-release-unsigned.apk ..\app\build\outputs\apk\release\app-testkey.apk
|
||||
BIN
signature/testkey.pk8
Normal file
BIN
signature/testkey.pk8
Normal file
Binary file not shown.
27
signature/testkey.x509.pem
Normal file
27
signature/testkey.x509.pem
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
|
||||
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g
|
||||
VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE
|
||||
AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe
|
||||
Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET
|
||||
MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G
|
||||
A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p
|
||||
ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI
|
||||
hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM
|
||||
qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4
|
||||
wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy
|
||||
4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU
|
||||
RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s
|
||||
zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw
|
||||
HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ
|
||||
AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE
|
||||
CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH
|
||||
QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG
|
||||
CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud
|
||||
EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa
|
||||
J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y
|
||||
LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe
|
||||
+ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX
|
||||
31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr
|
||||
sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0=
|
||||
-----END CERTIFICATE-----
|
||||
Reference in New Issue
Block a user