J'utilise un seul projet pour porter des versions allégée et complète, c'est-à-dire que je ne fais que mettre à jour les noms de package de fichier Manifest.
Ma structure de projet est comme ça
Mon application
| _Src
| _Com.example.myapp
| _MyClass.Java
et le nom de mon paquet manifeste est différent.
package = "com.example.myapplite"
J'utilise un projet de bibliothèque car je veux les noms de paquet des classes que j'utilise dans MyApp.
J'ai utilisé ceci
System.out.println("Package Name " + context.getPackageName());
Mais sa me donne une valeur de nom de paquet de fichier manifeste c'est-à-dire. com.example.myapplite
Je veux le nom du paquet MyClass.Java. c'est à dire. com.example.myapp
Aussi je suis au courant de cela
MyClass mClass = new MyClass();
Package pack = mClass.getClass().getPackage();
Mais je ne peux pas utiliser cette approche parce que j'utilise l'approche suivante pour obtenir un fichier de classe dans mon projet de bibliothèque.
Class c = Class.forName("package_name.MyClass");
Comment obtenir le nom du paquet du fichier MyClass.Java par programme?
Pourrait être utile
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);
}
}
essaye ça,
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();
travaillera définitivement.
Exemple simple d'une classe NotificationListener
:
Timber.d(NotificationListener.class.getPackage().getName());
Timber.d(NotificationListener.class.getSimpleName());
Timber.d(NotificationListener.class.getName());
Sortie:
D/PermissionsUtil: com.example.receivers
D/PermissionsUtil: NotificationListener
D/PermissionsUtil: com.example.receivers.NotificationListener