web-dev-qa-db-fra.com

Comment obtenir le nom du paquet du fichier de classe source sous Android?

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?

10
Mac

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);
   }
} 
12
Ayaz Ali Khatri

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();
    }
2
Darshit Chokshi
String packageName = this.getClass().getPackage().getName();

travaillera définitivement.

1
Kaidul

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
0
V. Kalyuzhnyu