ライトバージョンとフルバージョンを移植するプロジェクトを1つだけ使用しているため、マニフェストファイルのパッケージ名を更新しています。
私のプロジェクト構造はこのようなものです
私のアプリ
| _src
| _com.example.myapp
| _MyClass.Java
マニフェストパッケージ名が異なります。
package = "com.example.myapplite"
MyAppで使用しているクラスのパッケージ名が欲しいという点で、1つのライブラリプロジェクトを使用しています。
私はこれを使いました
System.out.println("Package Name " + context.getPackageName());
しかし、マニフェストファイルパッケージ名の値、つまりcom.example.myapplite
MyClass.Javaパッケージ名が必要です。すなわち。 com.example.myapp
これも知っています
MyClass mClass = new MyClass();
Package pack = mClass.getClass().getPackage();
しかし、私はライブラリプロジェクトでクラスファイルを取得するために次のアプローチを使用しているため、このアプローチは使用できません。
Class c = Class.forName("package_name.MyClass");
MyClass.Javaファイルのパッケージ名をプログラムで取得する方法は?
役に立つかもしれません
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);
}
}
これを試して、
try {
Class c = Class.forName("package_name.MyClass");
Object o = c.newInstance();
Package p = o.getClass().getPackage();
System.out.println("Package Name :: " + p.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
String packageName = this.getClass().getPackage().getName();
間違いなく動作します。
Kotlinソリューション:
val packageName = this.javaClass.`package`?.name
いくつかのクラスNotificationListener
の簡単な例:
Timber.d(NotificationListener.class.getPackage().getName());
Timber.d(NotificationListener.class.getSimpleName());
Timber.d(NotificationListener.class.getName());
出力:
D/PermissionsUtil: com.example.receivers
D/PermissionsUtil: NotificationListener
D/PermissionsUtil: com.example.receivers.NotificationListener