web-dev-qa-db-ja.com

Androidでソースクラスファイルのパッケージ名を取得する方法は?

ライトバージョンとフルバージョンを移植するプロジェクトを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ファイルのパッケージ名をプログラムで取得する方法は?

10
Mac

役に立つかもしれません

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

これを試して、

    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();

間違いなく動作します。

1
Kaidul

Kotlinソリューション:

val packageName = this.javaClass.`package`?.name
1
Daniil Chuiko

いくつかのクラス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
1
Vlad