如何在Android中获取库的软件包名称?

时间:2019-11-24 14:49:21

标签: android exception android-library android-package-managers android-threading

我有一个android应用程序,我内部依赖于几个库。现在,我试图记录在单个组件级别(即单个库级别)发生的崩溃,以便它有助​​于我分析导致崩溃的组件。

public class MyApplication extends Application implements Thread.UncaughtExceptionHandler {

    public static final String TAG = "myapplication";

    public static MyApplication applicationInstance;

    public MyApplication() {
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    @Override
    public Context getApplicationContext() {
        return super.getApplicationContext();
    }

    public static MyApplication getInstance() {
        return applicationInstance;
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
    }

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
    }


    @Override
    public void uncaughtException(Thread t, Throwable e) {
        Log.i(TAG, "Inside uncaught exception..." + Thread.currentThread().getId());
        //getPackageName() here returns the name of the application instead of the dependent library's one. 
    }
}

是否有任何方法可以获取在其Android清单中添加的库的软件包名称?

1 个答案:

答案 0 :(得分:2)

不是。库没有应用程序ID。清单中的package属性仅用于代码生成,仅此而已。

如果您碰巧从库中获得了一个对象,则可以获取与该类关联的Java包,并且也许可以从那里推断出您要引用的库。