`
leiya172
  • 浏览: 26855 次
社区版块
存档分类
最新评论

Robotium在不连PC的情况在手机上面自动定时执行

 
阅读更多

应用环境:

让Robotium在不连接PC的情况下,定时在手机上面自动运行

实现方法:

1.注册一个开机广播,然后开机广播发出之后,启动相应的ACTIVITY

2.在此Activity中添加一个提醒(AlarmManager),AlarmManager定时发送广播启动Instrumentation

操作步骤:

1.创建一个Android Junit Test项目

2.在AndroidManifest.xml的application中增加开机广播

        <receiver android:name=".BootBroadcastReceiver">
		    <intent-filter>
		        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
		    </intent-filter>
	</receiver>
3.BootBroadcastReceiver为接收开机广播的activity

public class BootBroadcastReceiver extends BroadcastReceiver  {
	static final String ACTION = "android.intent.action.BOOT_COMPLETED";  
	//接收广播
	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(ACTION)){
			Intent bootActivityIntent= new Intent(context,BootActivity.class);
            bootActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(bootActivityIntent);                  
		}
	}
}

4.在AndroidManifest.xmlapplication增加启动的主Activity:

        <activity
            android:name=".BootActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

5.在BootActivity中增加提醒,每天8:30定时执行AlarmReceiver.class

public class BootActivity extends Activity  {
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//设定时间:8:30
		Calendar calendar = Calendar.getInstance();
		//calendar.add(Calendar.HOUR, 24);
		calendar.set(Calendar.HOUR_OF_DAY, 14);
		calendar.set(Calendar.MINUTE, 30);
		calendar.set(Calendar.SECOND, 00);
		System.out.println("设下的时间:"+new SimpleDateFormat("yyyy-mm-dd HH:mm:ss").format(calendar.getTimeInMillis()));	
			
		Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); 
		PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
		AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
		am.cancel(pendingIntent);	
		am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),10*60*1000, pendingIntent);
		
	}

	@Override
	protected void onPause() {
		super.onPause();
		finish();// 直接关掉
	}
}

6.AlarmReceiver.class实现启动Robotium

public class AlarmReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {         
        context.startInstrumentation(new ComponentName("androidManifest.xml.packagename", "android.test.InstrumentationTestRunner"), null, null);
        
    }
}





版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics