如何在Android中获取源类文件的包名?

Mac*_*Mac 10 java android class package-managers android-library

我只使用一个项目来移植Lite和完整版本,我只是更新Manifest文件包名称.

我的项目结构是这样的

我的应用程序
      | _src
          | _com.example.myapp
                                              | _MyClass.java

和我的清单包名称不同.

包= "com.example.myapplite"

我正在使用一个库项目,因为我想要在MyApp中使用的类的包名.

我用过这个

        System.out.println("Package Name " + context.getPackageName());
Run Code Online (Sandbox Code Playgroud)

但它给我一个清单文件包名称值即.com.example.myapplite

我想要MyClass.java包名.即.com.example.myapp

我也知道这一点

 MyClass mClass = new MyClass();
 Package pack = mClass.getClass().getPackage();
Run Code Online (Sandbox Code Playgroud)

但是我不能使用这种方法,因为我使用以下方法来获取我的库项目中的类文件

Class c = Class.forName("package_name.MyClass");
Run Code Online (Sandbox Code Playgroud)

如何通过编程方式获取MyClass.java文件的包名?

小智 12

可能有帮助

package org.kodejava.example.lang;
import java.util.Date;

public class ObtainingPackageName {
public static void main(String[] args) {
    //
    // Create an instance of Date class, and then obtain the class package
    // name.
    //
    Date date = new Date();
    Package pack = date.getClass().getPackage();
    String packageName = pack.getName();
    System.out.println("Package Name = " + packageName);

    //
    // Create an insatnce of our class and again get its package name
    //
    ObtainingPackageName o = new ObtainingPackageName();
    packageName = o.getClass().getPackage().getName();
    System.out.println("Package Name = " + packageName);
   }
} 
Run Code Online (Sandbox Code Playgroud)


小智 5

Kotlin 解决方案:

val packageName = this.javaClass.`package`?.name
Run Code Online (Sandbox Code Playgroud)