android自动测试2:使用android studio实现设备循环自动重启

一、前提:

apk可以获得系统签名

二、适用:

需要对android设备进行循环重启测试

三、步骤:

1. AndroidManifest.xml中添加以下权限:

    <uses-permission android:name="android.permission.REBOOT"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

其中REBOOT需要系统用户权限,需要改sharedUserId,然后进行系统签名。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:sharedUserId="android.uid.system"
    package="com.xxx.xxx">

2.系统签名方式:

2.1可以内置在代码中的app->build.gradle文件中signingConfigs、buildTypes位置,

,然后使用对应的buildTypes编译成apk即可。

2.2或者编译成apk,使用签名工具对apk进行系统签名,得到最终签名后的apk。

2.3系统签名用到的keystore,和ROM相关。

Android原生ROM的系统签名keystore可以网上下载获得。

手机/ODM厂商的ROM可能keystore不同,如有合作关系,可以索要签名工具。

3.AndroidManifest.xml中注册监听广播

<receiver android:name=".YourBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
</receiver>

4.编写class YourBroadcastReceiver

import android.app.KeyguardManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;

public class YourBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
            //开机后一般会停留在锁屏页面且短时间内没有进行解锁操作屏幕会进入休眠状态,此时就需要先唤醒屏幕和解锁屏幕
            //屏幕唤醒
            PowerManager pm=(PowerManager)context.getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock pwl=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_DIM_WAKE_LOCK,"com.your.packetName:android.intent.action.BOOT_COMPLETED");
            pwl.acquire();
            //屏幕解锁
            KeyguardManager km=(KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
            KeyguardManager.KeyguardLock kgl=km.newKeyguardLock("android.intent.action.BOOT_COMPLETED");
            kgl.disableKeyguard();


            //重启设备
        Intent intent=new Intent(Intent.ACTION_REBOOT);
        intent.putExtra("nowait",1);
        intent.putExtra("interval",1);
        intent.putExtra("window",0);
        sendBroadcast(intent);


        }
    }
}

5. 编译apk,安装已经进行系统签名的apk,重启设备,以后即可实现设备循环自动重启。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值