/ / मैं एंड्रॉइड में पैकेज नाम कैसे प्राप्त कर सकता हूं? - जावा, एंड्रॉइड

मैं एंड्रॉइड में पैकेज नाम कैसे प्राप्त कर सकता हूं? - जावा, एंड्रॉइड

मुझे अपने और मेरे द्वारा कुछ उपयोग वर्ग लिखने की जरूरत हैएंड्रॉइड ऐप के packagename की जरूरत है। जबकि मुझे पैकेज प्रबंधक मिला जो केवल गतिविधि में उपयोग किया जा सकता है और इस पर संदर्भ है। मैं केवल अपनी कक्षा में पैकेजगेम प्राप्त करना चाहता हूं जिसका उपयोग एंड्रॉइड ऐप में किया जाएगा। तो मैं यह कैसे कर सकता हूँ? धन्यवाद!

उत्तर:

जवाब के लिए 32 № 1

उपयोग : getPackageManager().getPackageInfo(getPackageName(), 0).packageName या केवल MyContext.getPackageName()

आप एक समारोह भी बना सकते हैं:

public String getPackageName(Context context) {
return context.getPackageName();
}

जवाब के लिए 12 № 2

संदर्भ के लिए आवश्यकता के बिना निम्नलिखित निरंतर उपलब्ध है।

BuildConfig.APPLICATION_ID

जवाब के लिए 4 № 3

आप इंस्टॉल किए गए ऐप का पैकेज नाम प्राप्त कर सकते हैं:

ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
PackageManager pm = getApplicationContext().getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);

और यदि आप अपने ऐप का पैकेज नाम ढूंढना चाहते हैं:

context.getPackageName();

जवाब के लिए 2 № 4

getApplicationContext().getPackageName() पैकेज का नाम देगा।


उत्तर के लिए 1 № 5
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
get a list of installed apps.
packages = pm.getInstalledApplications(0);

ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);

for (ApplicationInfo packageInfo : packages) {
//packageInfo.packageName contains package name


}

उत्तर के लिए 1 № 6

आप इस तरह से एक कक्षा बना सकते हैं:

public class AppInfo{
private static Context cxt;
public static String PACKAGE_INFO;
public static String init(Context context){
cxt = context;
PACKAGE_INFO = cxt.getPackageName();
}
}

तो आप इसे इस तरह इस्तेमाल कर सकते हैं

public class MyActivity extends Activity{
@Override
public void onCreate(Bundle bundle){
...
AppInfo.init(getApplicationContext());
...
}
}

तो आप इसे इस तरह से कॉल कर सकते हैं:

public class someClass{
public void someMethod(){
String packageInfo = AppInfo.PACKAGE_INFO;
//Do what you wish
}
}

उत्तर के लिए 1 № 7

मैंने एक संदर्भ चर से शुरू होने वाले पैकेज नाम को प्राप्त करने के निम्नलिखित दो तरीकों को देखा है:

context.getPackageManager().getPackageInfo(context.getPackageName(), 0).packageName

तथा

context.getPackageName()

क्या वे हमेशा एक ही जवाब देते हैं? क्या कुछ परिस्थितियों में दूसरे पर उपयोग करने के लिए एक तरीका बेहतर है?


उत्तर № 8 के लिए 1

मुझे लगता है getPackageName() बिना कॉल किए गतिविधि के भीतर सीधे उपलब्ध है getApplicationContext। इसे स्वयं जांच लिया। अच्छा काम करना।


जवाब के लिए 0 № 9

यहां इसे अपने उपयोग वर्ग में जोड़ें। यह विभिन्न "स्वाद" और डीबग / रिलीज बिल्ड को संभालने के लिए सुनिश्चित करता है, क्योंकि अन्य उत्तरों नहीं करते हैं:

@Nullable
public static String getApplicationPackageName(@NonNull Context context)
{
final PackageInfo packageInfo = getPackageInfo(context);
if (packageInfo.applicationInfo == null)
{
return null;
}
// Returns the correct “java” package name that was defined in your
// AndroidManifest.xml.
return packageInfo.applicationInfo.packageName;
}

// Convenience method for getting the applications package info.
@NonNull
private static PackageInfo getPackageInfo(@NonNull final Context context)
{
final PackageManager packageManager = context.getPackageManager();

try
{
return packageManager.getPackageInfo(context.getPackageName(), 0);
}
catch (final PackageManager.NameNotFoundException ignored)
{
//noinspection ConstantConditions: packageInfo should always be available for the embedding app.
return null;
}
}