我的主要活动从以下开始:
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
?
答案 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();