当前位置:首页 » 安卓系统 » android类名

android类名

发布时间: 2022-06-29 01:30:30

A. android studio怎么获取类名

可以参考这个链接进行操作:https://blog.csdn.net/hi577/article/details/89710881。
利用Android Studio获取手机应用包名和类名的方法,

B. Android开发如何获得第三方应用Widget的包名和类名

最近在做Android的平板的开发,想在桌面上预置一些第三方应用的Widget,在桌面预置Widget的方法就是要获得应用的包名和类名。 桌面预置widget的方法 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:<appwidget launcher:packageName="com.google.android.apps.genie.geniewidget" //预置应用的包名 launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider" //预置应用的Provider的类名,不是Activity的类名 launcher:screen="1"//在第几屏0为第一屏,launcher:x="0"//x坐标launcher:y="0"//y坐标 launcher:spanX="4"//x方向占几个单元格 launcher:spanY="1"///y方向占几个单元格 通过logcat有时可以找到应用的包名和Provider类名,此方法不可取,容易出错。系统的widget可以通过查找相关的源码找到对应的包名和Provider的类名,但是第三方应用看不到源码,但是也可以通过反编译第三方应用,获得相应的Maifest.xml文件,找到对应的包名和Provider类名,但是此方法比较繁琐。 可以通过在Launcher中添加如下代码,可以将系统中所安装的所有 的widget的信息打印出来: 在Launcher.java中的onCreate方法中添加下面的代码: List<=mAppWidgetManager.getInstalledProviders();finalintproviderCount=providers.size();for(inti=0;i<providerCount;i++){ ComponentNameprovider=providers.get(i).provider;Log.i("xxx", "packagename:" +provider.getPackageName()+ "classname:" +provider.getClassName());}新编译Launcher,把Launcher push进去之后,执行 adb logcat -s xxx,就可以看到打印出来的Log信息,包名和Provider了类名。 桌面预置shortcut的方法: 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:<favorites

C. android的页面跳转时,如A->B,这时候在B页面怎么获取A的类名

android页面跳转时,从a界面跳转到b界面,获取a的类名的方式,可以使用intent意图总的bundle将类名放入key-value键值对中,在b页面进行读取,如下代码:

假设A界面跳到B界面
//FirstActivity中:
IntentmIntent=newIntent(this,SecondActivity.class);
mIntent.putExtra("name","FirstActivity")
startActivity(mIntent);
//B界面中
StringactivityName=getIntent().getExtra("name");

D. android 怎么获取service的类名

ActivityManager.RunningServiceInfo类: 封装了正在运行的服务信息

获取系统里所有真正运行的服务是通过调用ActivityManager方法来得到的,具体方法如下:

List<ActivityManager.RunningServiceInfo> getRunningServices (int maxNum)
功能:返回所有正在运行的服务
参数: maxNum 代表我们希望返回的服务数目大小,一般给个稍大的值即可, 例如,50 。

ActivityManager.RunningServiceInfo 类
常用字段:

long activeSince 服务第一次被激活的时间, 包括启动和绑定方式
int clientCount 如果该Service是通过Bind方法方式连接,则clientCount代表了service连接客户端的数目
int crashCount 服务运行期间,出现死机的次数
boolean foreground 若为true,则该服务在后台执行
int pid 如果不为0,表示该service所在的进程ID号( PS:为0的话我也不清楚 - - 求指点)
int uid 用户ID 类似于Linux的用户权限,例如root等
String process 进程名,默认是包名或者由属性android:process指定
ComponentName service 获得该Service的组件信息 包含了pkgname / servicename信息

PackageManger类
说明: 封装了对应用程序信息的操作
获得应用程序信息的的方法如下:
public abstractApplicationInfo getApplicationInfo(String packageName, int flags)
参数:packagename 包名
flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
功能:返回ApplicationInfo对象

关于PackageManger更多信息,请查看<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>

Task任务的使用,我也就不在赘述了,大家可以仔细看下SDK,在此推荐一篇博客来帮助大家理解。

E. Android:类名.this.方法()是一种怎样的形式呢

OnChildClickListener 中的this是指的new的OnChildClickListener 对象,想调用MainActivity实例的内容要指明是用的哪个实例的this。

this是在new之后的实例对象的引用别名。

F. android studio 怎样全局替换类名

两种办法可以全局替换类名:
1.在把eclipse的目录切换到Package Explorer,然后,在其中对应的包上右键,选择Refactor--->Rename,在打开的Rename对话框中,还可以进行选择一些选项,这样,就可以更改包名了。然后,使用同样的方法修改类名。

2.另外,还有可能会替换一些名称,如果时整个项目替换,可以使用eclipse的Search----->file,然后在其中设置替换条件,感觉比较好的是有区分大小写和正则表达式的功能;如果对个文件替换,可以打开这个文件,然后,按<ctul>+F,这样弹出个对话框,我们可以选择区分大小写替换和全部替换,这样可以很快完成任务了。效果同样不错。

G. android中r文件内部类类名为什么是小写

在开发Android应用时,会接触到布局文件,一般在 工程名/res/layout/*.xml 目录下,这与网页开发时使用css控制布局类似,主要目的是使布局与程序代码分开,便于布局的修改以及控制。
如果使用eclipse平台开发,每一个Android项目,都会有一个R.java文件,该文件用于标识所有的资源,当资源文件(一般是位于res目录的下的*.xml文件)被修改了,R.java文件会自动更新。
但存在一种特殊情况。如果布局文件中包含任何大写字母,R.java文件更新会出错。这个问题很让人恼火,很难查处错在哪里。
例如在/res/layout/目录下添加一个Test.xml文件,R.java文件不会更新,在代码中也不能使用Test.xml文件;然后再向/res/layout/目录下添加任何名称的布局文件,都会出现同样的情况(不论名称里是否有大写字母)。为了解决这个问题,只能将Test.xml文件删除,也就是说,res/layout/目录下的所有布局文件,文件名中都不能出现大写字母,否则会出错。

H. Android怎么获取一个包下的全部类名

您好,我在别的论坛也看到您的问题,很高兴为您解答:

/**
* 从包package中获取所有的Class
*
* @param pack
* @return
*/
public static Set<Class<?>> getClasses(Package pack) {

// 第一个class类的集合
Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
// 是否循环迭代
boolean recursive = true;
// 获取包的名字 并进行替换
String packageName = pack.getName();
String packageDirName = packageName.replace('.', '/');
// 定义一个枚举的集合 并进行循环来处理这个目录下的things
Enumeration<URL> dirs;
try {
dirs = Thread.currentThread().getContextClassLoader().getResources(
packageDirName);
// 循环迭代下去
while (dirs.hasMoreElements()) {
// 获取下一个元素
URL url = dirs.nextElement();
// 得到协议的名称
String protocol = url.getProtocol();
// 如果是以文件的形式保存在服务器上
if ("file".equals(protocol)) {
// 获取包的物理路径
String filePath = URLDecoder.decode(url.getFile(), "UTF-8");
// 以文件的方式扫描整个包下的文件 并添加到集合中
(packageName, filePath,
recursive, classes);
} else if ("jar".equals(protocol)) {
// 如果是jar包文件
// 定义一个JarFile
JarFile jar;
try {
// 获取jar
jar = ((JarURLConnection) url.openConnection())
.getJarFile();
// 从此jar包 得到一个枚举类
Enumeration<JarEntry> entries = jar.entries();
// 同样的进行循环迭代
while (entries.hasMoreElements()) {
// 获取jar里的一个实体 可以是目录 和一些jar包里的其他文件 如META-INF等文件
JarEntry entry = entries.nextElement();
String name = entry.getName();
// 如果是以/开头的
if (name.charAt(0) == '/') {
// 获取后面的字符串
name = name.substring(1);
}
// 如果前半部分和定义的包名相同
if (name.startsWith(packageDirName)) {
int idx = name.lastIndexOf('/');
// 如果以"/"结尾 是一个包
if (idx != -1) {
// 获取包名 把"/"替换成"."
packageName = name.substring(0, idx)
.replace('/', '.');
}
// 如果可以迭代下去 并且是一个包
if ((idx != -1) || recursive) {
// 如果是一个.class文件 而且不是目录
if (name.endsWith(".class")
&& !entry.isDirectory()) {
// 去掉后面的".class" 获取真正的类名
String className = name.substring(
packageName.length() + 1, name
.length() - 6);
try {
// 添加到classes
classes.add(Class
.forName(packageName + '.'
+ className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}

return classes; }
/**
* 以文件的形式来获取包下的所有Class
*
* @param packageName
* @param packagePath
* @param recursive
* @param classes
*/
public static void (String packageName,
String packagePath, final boolean recursive, Set<Class<?>> classes) {
// 获取此包的目录 建立一个File
File dir = new File(packagePath);
// 如果不存在或者 也不是目录就直接返回
if (!dir.exists() || !dir.isDirectory()) {
return;
}
// 如果存在 就获取包下的所有文件 包括目录
File[] dirfiles = dir.listFiles(new FileFilter() {
// 自定义过滤规则 如果可以循环(包含子目录) 或则是以.class结尾的文件(编译好的java类文件)
public boolean accept(File file) {
return (recursive && file.isDirectory())
|| (file.getName().endsWith(".class"));
}
});
// 循环所有文件
for (File file : dirfiles) {
// 如果是目录 则继续扫描
if (file.isDirectory()) {
(packageName + "."
+ file.getName(), file.getAbsolutePath(), recursive,
classes);
} else {
// 如果是java类文件 去掉后面的.class 只留下类名
String className = file.getName().substring(0,
file.getName().length() - 6);
try {
// 添加到集合中去
classes.add(Class.forName(packageName + '.' + className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
转载,仅供参考。
如果我的回答没能帮助您,请继续追问。

I. android jar包类名如何混淆成方框

一、如何指定某个包不被混淆

不被混淆的包下放一个指定不被混淆的class,这样该包名就不会被混淆

举例demo原有目录结构如下:

图1-1

指定MainActivity不被混淆

-keep public class * extends android.app.Activity # 保持哪些类不被混淆

-flattenpackagehierarchy 'yjrtest' #重新包装所有重命名的包并放在给定的单一包中

混淆后的目录结构如下:

图1-2

可以看出除了MainActivity所在的包没有被混淆之外其他的包名都被混淆了。

J. 如何将android中的变量和类名 混淆成中文名称

这个要说起来就太复杂了,简短的回复一下你。首先强调一下混淆的目的就是不让别人能反编译看懂你的代码。包名和类名就相当于PC上的路径名(你可以把它理解为稳定的定位符);清晰的包名类名,能让你很容易定位到文件和方法,改成abcd这简短的名称之后,就使人无法轻易看懂代码了。

热点内容
phpfirebird 发布:2024-05-02 15:45:55 浏览:125
思科服务器怎么修改imc地址 发布:2024-05-02 15:35:27 浏览:770
强制删除文件夹的工具 发布:2024-05-02 15:34:34 浏览:770
sql存储过程调用存储过程 发布:2024-05-02 15:34:33 浏览:897
jmeter脚本调试 发布:2024-05-02 15:21:45 浏览:327
安卓微信数据怎么传到新手机 发布:2024-05-02 15:17:19 浏览:632
服务器搭建备案 发布:2024-05-02 15:17:10 浏览:720
王者荣耀服务器为什么崩溃 发布:2024-05-02 15:03:23 浏览:965
android立方体 发布:2024-05-02 15:00:06 浏览:61
手机存储的音乐删除了怎么办 发布:2024-05-02 14:55:00 浏览:379