ef2*_*011 324 android package android-context
我知道Context.getApplicationContext()和View.getContext()的可用性,通过它我可以实际调用Context.getPackageName()来检索应用程序的包名.
如果我从一个View
或一个Activity
对象可用的方法调用它们,但是如果我想从一个完全独立的类中找到包名而没有View
或者Activity
,有没有办法(直接或间接)?
Joh*_*hey 462
一个想法是在主活动中有一个静态变量,实例化为包名.然后只引用该变量.
您必须在main活动的onCreate()
方法中初始化它:
全球同学:
public static String PACKAGE_NAME;
Run Code Online (Sandbox Code Playgroud)
然后..
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PACKAGE_NAME = getApplicationContext().getPackageName();
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过它访问它Main.PACKAGE_NAME
.
Bil*_*lda 252
如果您使用gradle-android-plugin构建您的应用程序,那么您可以使用
BuildConfig.APPLICATION_ID
Run Code Online (Sandbox Code Playgroud)
从任何范围检索包名称,包括 一个静态的.
Add*_*dev 68
如果使用"在任何地方"这个词你的意思是没有明确的Context
(例如来自后台线程)你应该在项目中定义一个类,如:
public class MyApp extends Application {
private static MyApp instance;
public static MyApp getInstance() {
return instance;
}
public static Context getContext(){
return instance;
// or return instance.getApplicationContext();
}
@Override
public void onCreate() {
instance = this;
super.onCreate();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您manifest
需要将此类添加到选项卡的Name
字段中Application
.或者编辑xml并放入
<application
android:name="com.example.app.MyApp"
android:icon="@drawable/icon"
android:label="@string/app_name"
.......
<activity
......
Run Code Online (Sandbox Code Playgroud)
然后从你可以打电话的任何地方
String packagename= MyApp.getContext().getPackageName();
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
Mah*_*iya 43
如果使用gradle build,请使用以下命令:BuildConfig.APPLICATION_ID
获取应用程序的包名称.
use*_*104 13
对于那些使用 Gradle 的人,正如 @Billda 提到的,您可以通过以下方式获取包名称:
BuildConfig.APPLICATION_ID
Run Code Online (Sandbox Code Playgroud)
这将为您提供应用程序 gradle 中声明的包名称:
android {
defaultConfig {
applicationId "com.domain.www"
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣获取 java 类使用的包名称(有时与 不同applicationId
),您可以使用
BuildConfig.class.getPackage().toString()
Run Code Online (Sandbox Code Playgroud)
如果您对使用哪一个感到困惑,请阅读此处:
注意:应用程序 ID 过去直接与代码的包名称关联;因此,一些 Android API 在其方法名称和参数名称中使用术语“包名称”,但这实际上是您的应用程序 ID。例如,Context.getPackageName() 方法返回您的应用程序 ID。无需在应用程序代码之外共享代码的真实包名称。
小智 5
private String getApplicationName(Context context, String data, int flag) {
final PackageManager pckManager = context.getPackageManager();
ApplicationInfo applicationInformation;
try {
applicationInformation = pckManager.getApplicationInfo(data, flag);
} catch (PackageManager.NameNotFoundException e) {
applicationInformation = null;
}
final String applicationName = (String) (applicationInformation != null ? pckManager.getApplicationLabel(applicationInformation) : "(unknown)");
return applicationName;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
310990 次 |
最近记录: |