作为设备所有者,我一直致力于制作软件包,但没有发现任何成功。我已经为我的设备建立了同样的根基。我正在使用这个命令。
val exe = ShellExecuter()
var command = "dpm set-device-owner $packageName/ .MyDeviceAdminReceiver"
val outp = exe.Executer(command)ShellExecuter代码段
public String Executer(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {`enter code here`
e.printStackTrace();
}
String response = output.toString();
return response;
} MyDeviceAdminReceiver代码段
class MyDeviceAdminReceiver : DeviceAdminReceiver() {
companion object {
fun getComponentName(context: Context): ComponentName {
return ComponentName(context.applicationContext, MyDeviceAdminReceiver::class.java)
}
private val TAG = MyDeviceAdminReceiver::class.java.simpleName
}
override fun onLockTaskModeEntering(context: Context?, intent: Intent?, pkg: String?) {
super.onLockTaskModeEntering(context, intent, pkg)
Log.d(TAG, "onLockTaskModeEntering")
}
override fun onLockTaskModeExiting(context: Context?, intent: Intent?) {
super.onLockTaskModeExiting(context, intent)
Log.d(TAG, "onLockTaskModeExiting")
}
}device_admin_reciever代码段
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<device-admin>
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
</uses-policies>
</device-admin>我想让我的根植设备拥有我的应用程序包,使用命令或任何其他方式,如果有人可以建议的话。
发布于 2018-12-28 01:33:09
如果您是设备上的root用户,则可以按照此方法成为设备所有者。
首先,创建一个包含以下内容的文件device_owner.xml:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<device-owner package="your.owner.app.package.id" name="Your app name" />现在执行以下步骤
adb push device_owner.xml /sdcard/
adb shell
su
cp /sdcard/device_owner.xml /data/system/
cd /data/system/
chown system:system device_owner.xml
reboot注意:在重新启动设备之前,请确保您已安装应用程序,您正尝试将其设置为设备所有者。如果您不这样做,您将获得无限时间的启动动画。
发布于 2019-01-01 14:52:16
创建xml文件并从您的代码复制到正确的位置/data/system/device_owner.xml,然后执行此代码以设置适当的权限。并调用reboot命令
final String[] run_cmd = new String[]{"chown","system:system","/data/system/device_owner.xml"};
String reboot = "/system/bin/reboot";
execute(null,run_cmd);
execute(null,reboot);
public void execute(Map<String, String> environvenmentVars, String[] cmd) {
try {
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuffer output = new StringBuffer();
char[] buffer = new char[4096];
int read;
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
process.waitFor();
BufferedReader reader2 = new BufferedReader(new InputStreamReader(process.getErrorStream()));
StringBuffer output2 = new StringBuffer();
char[] buffer2 = new char[4096];
int read2;
while ((read2 = reader2.read(buffer2)) > 0) {
output2.append(buffer2, 0, read2);
}
reader.close();
process.waitFor();
}
catch (Exception e)
{
}
}https://stackoverflow.com/questions/53869222
复制相似问题