如何进行Android联机及模拟器单独测试Activity的辅助Activity示例开发(activity,android,移动开发)

时间:2024-05-05 16:40:54 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

想起写个单独测试Activity的辅助Activity的原因是在联机测试的时候IDEA或者Android Studio中的指定运行Activity功能没法使用了。

下面付IDE中指定运行Activity的界面截图:

如何进行Android联机及模拟器单独测试Activity的辅助Activity示例开发

辅助Activity要做的事情是将辅助Activity作为启动的默认Activity,其主界面中以ListView的形式展示所有Activity,通过单击ListView的Item项来启动要测试的Activity。

1. 辅助Activity代码示例:

packagesecondriver.app;importandroid.app.Activity;importandroid.content.Context;importandroid.content.Intent;importandroid.content.pm.ActivityInfo;importandroid.content.pm.PackageInfo;importandroid.content.pm.PackageManager;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.LinearLayout;importandroid.widget.ListView;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;/***CreatedbyBronchoon2015/11/15.*/publicclassTestActivitiesActivityextendsActivityimplementsAdapterView.OnItemClickListener{privateLinearLayoutmRootView;privateListViewmListView;privateArrayAdaptermAdapter;privateList<Class>mAllActivities;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);initView();mAllActivities=getActivities(this,this.getPackageName(),Arrays.<Class>asList(this.getClass()));mAdapter=newArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,mAllActivities);mListView.setAdapter(mAdapter);mListView.setOnItemClickListener(this);}privatevoidinitView(){mRootView=newLinearLayout(this);mListView=newListView(this);mListView.setId(android.R.id.list);mRootView.addView(mListView,ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);setContentView(mRootView);}@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){Classactivity=mAllActivities.get(position);//启动指定的ActivitystartActivity(newIntent(this,activity));}/***获取所有要测试的ActivityClass**@paramcontext*@parampackageName*@paramexcludeActivities*@return*/publicstaticList<Class>getActivities(Contextcontext,StringpackageName,List<Class>excludeActivities){finalStringTAG="GET_ACTIVITY";List<Class>includeActivities=newArrayList<>();try{PackageInfopackageInfo=context.getPackageManager().getPackageInfo(packageName,PackageManager.GET_ACTIVITIES);if(packageInfo.activities!=null){ActivityInfo[]activityInfos=packageInfo.activities;Log.d(TAG,"Find"+activityInfos.length+"activityinAndroidManifest.xml.");for(ActivityInfoactivityInfo:activityInfos){ClassactivityClass;StringactivityName=activityInfo.name;try{activityClass=Class.forName(activityName);if(Activity.class.isAssignableFrom(activityClass)){includeActivities.add(activityClass);}}catch(ClassNotFoundExceptione){Log.d(TAG,"Classnotfoundactivity"+activityName+"inpackage"+packageName);}}}Log.d(TAG,"Found"+includeActivities.size()+"activitylistis:"+Arrays.toString(includeActivities.toArray()));if(null!=excludeActivities){includeActivities.removeAll(excludeActivities);}Log.d(TAG,"Last"+includeActivities.size()+"activitylistis:"+Arrays.toString(includeActivities.toArray()));}catch(PackageManager.NameNotFoundExceptione){Log.d(TAG,"Androidsystemnotfoundpackage"+packageName);}returnincludeActivities;}}

在AndroidManifest.xml中讲辅助Activity设置为默认启动的Activity,之后就可以通过选择点击要启动的Activity来进行测试。该示例还可以通过添加一些代码来增强,比如启动Activity的时候可以通过输入对话框的方式携带数据至启动的Activity。测试完成后删除或者充足默认启动的Activity即可。

2. 配置AndroidManifest.xml :

<activityandroid:name=".TestActivitiesActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name=".OneActivity"/><activityandroid:name=".TwoActivity"/>

3. 调试日志:

11-1520:07:31.89910665-10665/secondriver.appD/GET_ACTIVITY:Find3activityinAndroidManifest.xml.11-1520:07:31.89910665-10665/secondriver.appD/GET_ACTIVITY:Foundactivityhave3listis:[classsecondriver.app.TestActivitiesActivity,classsecondriver.app.OneActivity,classsecondriver.app.TwoActivity]11-1520:07:31.89910665-10665/secondriver.appD/GET_ACTIVITY:Lastactivityhave2listis:[classsecondriver.app.OneActivity,classsecondriver.app.TwoActivity]

从日志中可以看到一共发现了3个Activity类,去除辅助的Activity,在ListView中讲显示2个Item项。


后期追加内容:

4. 结果效果图

如何进行Android联机及模拟器单独测试Activity的辅助Activity示例开发

新源码参见附件:TestActivitiesActivity.java.txt

Item状态变化Drawable文件内容如下:

如何进行Android联机及模拟器单独测试Activity的辅助Activity示例开发

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何进行Android联机及模拟器单独测试Activity的辅助Activity示例开发的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何进行Gridview的实现下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18