當前位置:首頁 » 安卓系統 » 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這簡短的名稱之後,就使人無法輕易看懂代碼了。

熱點內容
光遇夏日活動什麼時候安卓上線 發布:2024-04-19 11:08:15 瀏覽:853
Java開羅 發布:2024-04-19 10:50:55 瀏覽:959
linux音頻驅動 發布:2024-04-19 10:50:04 瀏覽:714
資料庫的表怎麼看 發布:2024-04-19 10:43:52 瀏覽:562
空調壓縮機不響 發布:2024-04-19 10:42:22 瀏覽:51
linux下的ftp工具 發布:2024-04-19 10:42:15 瀏覽:930
橡膠圈壓縮 發布:2024-04-19 10:29:50 瀏覽:170
風雲tv密碼哪裡有 發布:2024-04-19 10:20:03 瀏覽:997
小翼管家如何查看密碼 發布:2024-04-19 09:57:31 瀏覽:156
怎麼緩存小品 發布:2024-04-19 09:49:02 瀏覽:411