如何在android中找到主要活动包的名称?

时间:2016-10-10 12:18:27

标签: android

我的主要活动从以下开始:

 rm -rf /usr/local/var/run/watchman/ && brew uninstall watchman && brew install watchman

现在我正在使用其他包中的一些代码,例如在package com.example.alexander.bootintervals; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import com.example.alexander.libraryproject.MyLogger; public class MainActivity extends AppCompatActivity { ... 中。如何获取主要活动定义位置的主应用/包的名称?有没有办法从package com.example.alexander.libraryproject中驻留的代码中提取字符串com.example.alexander.bootintervals

4 个答案:

答案 0 :(得分:1)

您可以使用它来获取完整的包名称

String packageName = BuildConfig.APPLICATION_ID

答案 1 :(得分:0)

尝试MainActivity.class.getCanonicalName()并忽略最后一个句号及其后的类名。

答案 2 :(得分:0)

这么简单:

   String full_package_name = MainActivity.class.getCanonicalName();

如果您在模块中没有任何上下文,请执行以下操作: 1-在模块中定义如下界面(比如X模块):

public interface Provider{
  public String getPackageName();
}

2-在您的App模块中(比如A和B)您需要将此接口的实现发送到模块X,如下所示:

public class ProviderImpl implements Provider{
  @Override
  public String getPackageName()
  {
        return BuildConfig.APPLICATION_ID;
  }
 }

然后将实现发送给模块X一些如何:

ModuleX obj=new ModuleX(new ProviderImpl());

您可以向此界面添加任何内容,并使您的模块实现它。

然后在你的模块X中调用实现的getPackageName()方法并获取你的packageName;)

答案 3 :(得分:0)

你可以在getInstance()中添加返回其上下文的静态函数MainActivity,你可以使用它来获取它的上下文和调用函数,它给你的包名如下: / p>

public class MainActivity extends AppCompatActivity {
    private static MainActivity instance;

    public MainActivity () {
        instance = this;
    }

    public static MyApplication getInstance() {
         return instance;
    }

并按以下方式使用:

MainActivity.getInstance.getPackageName();