• 契机: 学习并积累自定义控件,为了看...如此,随着自定义控件增多,Activity也逐渐增多,相应的需要在AndroidManifest中配置,还需要想办法(例如写个按钮)能够访问每个Activity。 于是,有没有办法自动从Andro
    契机:
    在学习并积累自定义控件,为了看效果,需要放到Activity中来显示。
    每次写新的自定义控件,不可能都放到同一个Activity中,为了更好观看效果,每个Activity中只放少数控件。
    如此,随着自定义控件增多,Activity也逐渐增多,相应的需要在AndroidManifest中配置,还需要想办法(例如写个按钮)能够访问每个Activity。
    于是,有没有办法自动从AndroidManifest.xml中获取所有已经注册过的Activity,放到ListView中显示呢。

    写了以下工具类:
    public final class ClassUtils {
            private final static String TAG = "ClassUtils";
            private ClassUtils(){}
            
            /**
             * 返回AndroidManifest.xml中注册的所有Activity的class
             * @param context                环境
             * @param packageName  		包名
             * @param excludeList        排除class列表
             * @return
             */
            public final static List<Class> getActivitiesClass(Context context, String packageName, List<Class> excludeList){
                    
                    List<Class> returnClassList = new ArrayList<Class>();
                    try {
                            //Get all activity classes in the AndroidManifest.xml
                            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
                            if(packageInfo.activities!=null){
                                    Log.d(TAG, "Found "+packageInfo.activities.length +" activity in the AndrodiManifest.xml");
                                    for(ActivityInfo ai: packageInfo.activities){
                                            Class c;
                                            try {
                                                    c = Class.forName(ai.name);
                                                    // Maybe isAssignableFrom is unnecessary
                                                    if(Activity.class.isAssignableFrom(c)){
                                                            returnClassList.add(c);
                                                            Log.d(TAG, ai.name +"...OK");
                                                    }
                                            } catch (ClassNotFoundException e) {
                                                    Log.d(TAG, "Class Not Found:"+ai.name);
    //                                                e.printStackTrace();
                                            }
                                    }
                                    Log.d(TAG, "Filter out, left "+ returnClassList.size()  +" activity," + Arrays.toString(returnClassList.toArray()));
                                    
                                    //Exclude some activity classes
                                    if(excludeList!=null){
                                            returnClassList.removeAll(excludeList);
                                            Log.d(TAG, "Exclude " + excludeList.size() +" activity,"+ Arrays.toString(excludeList.toArray()));
                                    }
                                    Log.d(TAG, "Return "+ returnClassList.size()  +" activity," + Arrays.toString(returnClassList.toArray()));
                            }
                    } catch (NameNotFoundException e) {
                            e.printStackTrace();
                    }
    
                    return returnClassList;
            }
    
    }


    调用:
                    List<Class> excludeList = new ArrayList<Class>();
                    excludeList.add(this.getClass());
                    List<Class> activities = ClassUtils.getActivitiesClass(this, getPackageName(), excludeList);



    activities作为数据源与ListView绑定在一起,点击的时候跳转

                startActivity(new Intent(MainActivity.this, activities.get(position)));



    展开全文
  • 可以通过在AndroidManifest.xml中指定Activity的theme制定某些特性 例如,半透明效果,    android:label="@string/activity_translucent"  android:theme="@style/Theme.Translucent">

    可以通过在AndroidManifest.xml中指定Activity的theme制定某些特性
    例如,半透明效果,
            <activity android:name=".app.TranslucentActivity"
                    android:label="@string/activity_translucent"
                    android:theme="@style/Theme.Translucent">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>

    theme在styles.xml有如下定义,
        <style name="Theme.Translucent" parent="android:style/Theme.Translucent">
            <item name="android:windowBackground">@drawable/translucent_background</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:colorForeground">#fff</item>
        </style>
    注意style使用了继承了android预定义的类型android:style/Theme.Translucent"

    以上是半透明效果,透明效果如下所示,
    <style name="Theme.Transparent">
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
            <item name="android:windowBackground">@drawable/transparent_background</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:colorForeground">#fff</item>
        </style>

     还可以指定系统的墙纸作为Activity的背景。
        <style name="Theme.Wallpaper" parent="android:style/Theme.Wallpaper">
            <item name="android:colorForeground">#fff</item>
        </style>

     

    展开全文
  • AndroidManifest.xml中注册组件 界面跳转时Activity的识别方法有两种:第一种,通过name 第二种,通过&lt;intent-filter&gt;   通过配置文件配置&lt;intent-filter&gt;来实现...

    AndroidManifest.xml中的注册组件

    界面跳转时Activity的识别方法有两种:
    第一种,通过name

    第二种,通过
    <intent-filter>

     

    通过配置文件中配置<intent-filter>来实现Activity间的通讯

    AndroidManifest.xml:

    <intent-filter>
    <action anroid:name="aaa.bbb.ccc"/>
    <category android:name="android.intent.category.DEFAULT"></category >
    </intent-filter>

    TestActivity:

    Intent intent = new Intent();
    intent.setAction("aaa.bbb.ccc");
    intent.addCategory("android.intent.category.DEFAULT");
    startActivity(intent);

     

    Service 服务

    后台逻辑代码的处理

     

    Content Provider 内容提供者

    主要管理数据库的访问以及程序内和程序间的共享

     

    Broadcast Receiver 广播接收者

    全局事件的监听器

     

    posted @ 2016-10-18 15:31 HaoK 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • Python3解析AndroidManifest.xml寻找MainActivity用了好几层循环看着就难受,奈何初学者,暂时这样吧。import os import xml.etree.ElementTree as ET #android namespace namespace = '{...
    Python3解析AndroidManifest.xml寻找MainActivity


    用了好几层循环看着就难受,奈何初学者,暂时这样吧。

    import os
    import xml.etree.ElementTree as ET
    
    #android namespace
    namespace = '{http://schemas.android.com/apk/res/android}'
    
    #all activity
    activityArray = []
    
    tree = ET.parse('AndroidManifest.xml')
    root = tree.getroot()
    
    packageName = root.attrib['package']
    
    for application in root.iter('application'):
        for activity in application.iter('activity'):
            activityName = activity.get(namespace+'name')
            #add package name
            if activityName[0] == '.':
                activityName = packageName+activityName
            #find mainActivity
            for inter in activity.iter('intent-filter'):
                for action in inter.iter('action'):
                    if action.get(namespace+'name') =='android.intent.action.MAIN':
                        for cate in inter.iter('category'):
                            if cate.get(namespace+'name') == 'android.intent.category.LAUNCHER':
                               print('************\n'+activityName+'\n************') 
    
            activityArray.append(activityName)
            #print(activityName)
    

    展开全文
  • ANDROID:LABEL给以个标题名 ...确定ACTIVITY是以个MAIN的活动 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;manifest xmlns:android="http://schemas.android.com/.
    ANDROID:LABEL给以个标题名
     <action android:name="android.intent.action.MAIN"/>确定ACTIVITY是以个MAIN的活动
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.zhouhuasheng.activitytest">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".FirstActivity"
                android:label="This is FirstActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    展开全文
  • 文章目录Hook作用Hook入口分析准备工作AMS上做hook入口反射获取ActivityManagerProxy实例动态代理ActivityManagerProxy欺骗AMS权限检查过程还原目标Activity的启动还原目标Activity后遇到的问题利用...
  • 平常的时候,我们都是创建一个Activity之后,然后打开AndroidManifest.xml注册Activity,其实是可以使用快捷键的,Windows快捷键如下Alt+Enter回车键即可,如下图
  • AndroidManifest.xml文件&amp;lt;activity&amp;gt;元素用法 AndroidManifest.xml文件元素用法 语法 用法描述 属性 android:allowEmbedded android:allowTaskReparenting android:...
  • 搞android的对AndroidManifest.xml这个文件都比较熟悉,高手就不要
  • AndroidManifest.xml 是每个android程序必须的文件,它位于整个项目的根目录。我们每天都使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。但是对于这个文件,我们真正又了解多少了,...
  • 然后,当有时同时需要多个插件同时使用时,由于每个插件都包含有自身的Androidmanifest.xml文件,必然会出现的问题就是后面导入到Unity工程的Androidmanifest.xml文件会自动重命名为Androidmanifest 1.xml,An
  • AndroidManifest.xml文件

    2018-09-06 22:10:15
    AndroidManifest.xml文件是Android应用程序的清单文件,是整个Android应用程序的描述文件。每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。 清单文件向 Android 系统提供应用的...
  • <activity android:name=".TabWidget" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> http:/
  • 一般情况下,新建一个activity后,为了使
  • AndroidManifest.xml详解

    2019-02-20 22:12:46
    AndroidManifest.xml ​ Android应用的入口文件,它描述了package暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置 结构图 &lt;?xml version="1.0"...
  • 一直以为是代码那未初始化等问题,折腾了一个多小时,想起来要在AndroidManifest.xml中声明,如: <activity android:name=".Activity.Login_Reg. xxxActivity" android:theme="@style/LaunchTheme" /> ...
  • 我们进行APP开发的时候都会遇到一个文件:AndroidManifest.xml。  AndroidManifest.xml的官方解释是应用清单(manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件...
  • sample\android_21\ui\BasicTransition发现:  SampleActivityBase为FragmentActivity的子类,MainActivity为SampleActivityBase的子类,...MainActivity为启动activity,此时Andoridmanifest.xml中可以不声明Sampl
  • 1.设置打开app显示的activity&lt;activity android:name="net.common.android.StartActivity" android:label="@string/app_name" android:screenOrientation="portrait" &...
  • 我们安装程序apk的时候,会有一个程序权限请求界面,经常的请求包括网络通信,系统工具,读取手机状态和身份等,这些权限apk文件的一个叫AndroidManifest.xml的文件,我们直接用rar软件打开可以看到这个文件,...
1 2 3 4 5 ... 20
收藏数 110,355
精华内容 44,142
关键字:

需要在androidmanifest.xml中注册activity