首页 文章 精选 留言 我的

精选列表

搜索[模拟器开发],共10011篇文章
优秀的个人博客,低调大师

Android联机或者模拟器单独测试Activity的辅助Activity示例开发

想起写个单独测试Activity的辅助Activity的原因是在联机测试的时候IDEA或者Android Studio中的指定运行Activity功能没法使用了。 下面付IDE中指定运行Activity的界面截图: 辅助Activity要做的事情是将辅助Activity作为启动的默认Activity,其主界面中以ListView的形式展示所有Activity,通过单击ListView的Item项来启动要测试的Activity。 1. 辅助Activity代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 package secondriver.app; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** *CreatedbyBronchoon2015/11/15. */ public class TestActivitiesActivity extends Activity implements AdapterView.OnItemClickListener{ private LinearLayoutmRootView; private ListViewmListView; private ArrayAdaptermAdapter; private List<Class>mAllActivities; @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); initView(); mAllActivities=getActivities( this , this .getPackageName(),Arrays.<Class>asList( this .getClass())); mAdapter= new ArrayAdapter( this ,android.R.layout.simple_list_item_1,android.R.id.text1,mAllActivities); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener( this ); } private void initView(){ mRootView= new LinearLayout( this ); mListView= new ListView( this ); mListView.setId(android.R.id.list); mRootView.addView(mListView,ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); setContentView(mRootView); } @Override public void onItemClick(AdapterView<?>parent,Viewview, int position, long id){ Classactivity=mAllActivities.get(position); //启动指定的Activity startActivity( new Intent( this ,activity)); } /** *获取所有要测试的ActivityClass * *@paramcontext *@parampackageName *@paramexcludeActivities *@return */ public static List<Class>getActivities(Contextcontext,StringpackageName,List<Class>excludeActivities){ final StringTAG= "GET_ACTIVITY" ; List<Class>includeActivities= new ArrayList<>(); 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); } return includeActivities; } } 在AndroidManifest.xml中讲辅助Activity设置为默认启动的Activity,之后就可以通过选择点击要启动的Activity来进行测试。该示例还可以通过添加一些代码来增强,比如启动Activity的时候可以通过输入对话框的方式携带数据至启动的Activity。测试完成后删除或者充足默认启动的Activity即可。 2. 配置AndroidManifest.xml : 1 2 3 4 5 6 7 8 < activity android:name = ".TestActivitiesActivity" > < intent-filter > < action android:name = "android.intent.action.MAIN" /> < category android:name = "android.intent.category.LAUNCHER" /> </ intent-filter > </ activity > < activity android:name = ".OneActivity" /> < activity android:name = ".TwoActivity" /> 3. 调试日志: 1 2 3 11 - 15 20 : 07 : 31.899 10665 - 10665 /secondriver.appD/GET_ACTIVITY:Find 3 activityinAndroidManifest.xml. 11 - 15 20 : 07 : 31.899 10665 - 10665 /secondriver.appD/GET_ACTIVITY:Foundactivityhave 3 listis:[ class secondriver.app.TestActivitiesActivity, class secondriver.app.OneActivity, class secondriver.app.TwoActivity] 11 - 15 20 : 07 : 31.899 10665 - 10665 /secondriver.appD/GET_ACTIVITY:Lastactivityhave 2 listis:[ class secondriver.app.OneActivity, class secondriver.app.TwoActivity] 从日志中可以看到一共发现了3个Activity类,去除辅助的Activity,在ListView中讲显示2个Item项。 后期追加内容: 4. 结果效果图 新源码参见附件:TestActivitiesActivity.java.txt Item状态变化Drawable文件内容如下: 本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1712943,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册