প্যাকেজের নাম থেকে আবেদনের নাম পান


84

আমি অ্যাপ্লিকেশন প্যাকেজের নাম থেকে আবেদনটির নাম পেতে চাই। কেউ দয়া করে আমাকে দেখান আমি কীভাবে এটি পেতে পারি।

public class AppInstalledListener extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        String action = intent.getAction();
        if(action.equals("android.intent.action.PACKAGE_ADDED")){
            Logger.debug("DATA:"+intent.getData().toString());
        }
        if(action.equals("android.intent.action.PACKAGE_REMOVED")){
            Logger.debug("DATA:"+intent.getData().toString());
        }
        if(action.equals("android.intent.action.PACKAGE_REPLACED")){
            Logger.debug("DATA:"+intent.getData().toString());
        }
    }
}

উত্তর:


198

আপনি PackageManagerক্লাস ব্যবহার করতে পারেন ApplicationInfo:

final PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai;
try {
    ai = pm.getApplicationInfo( this.getPackageName(), 0);
} catch (final NameNotFoundException e) {
    ai = null;
}
final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");

এটি <application>এর ম্যানিফেস্টের ট্যাগে সংজ্ঞায়িত হিসাবে অ্যাপ্লিকেশন নামটি ফিরিয়ে দেবে ।


4
ঐটা নির্ভুল. ঘন্টার পর ঘন্টা এটি খুঁজছিলাম, ধন্যবাদ জিয়ন : ডি
ড্র্ল্যাবস

4
আমার অলরেডি প্যাকেজের নাম থাকলে আমার সমস্ত সময় এটি অচেনা হয়ে ফিরে আসে কেবল প্যাকেজের নাম থেকে নাম জানতে চায়
নিদা

যখন আমি এটি বিশ্বব্যাপী রিসিভারে ব্যবহার করি তখন এটি কাজ করছে না
জিভ কেসটেন

আপনি PACKAGE_REMOVED পরে কোনও প্যাকেজের অ্যাপ্লিকেশনআইফোন পেতে পারেন না।
61590

নিখুঁত এক .. শুধু কপি পেস্ট .. কাজ শেষ। ধন্যবাদ.
অভিহমঙ্গল এমএস

37

এটা চেষ্টা কর

final String packageName = "my.application.package"
PackageManager packageManager= getApplicationContext().getPackageManager();
String appName = (String) packageManager.getApplicationLabel(packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA));

এবং packageNameআপনার প্যাকেজ পুরো নাম দিয়ে প্রতিস্থাপন ।

আপনি ক্রিয়াকলাপের জন্য যেখানে প্যাকেজনাম এবং খণ্ডের জন্য getActivity () ব্যবহার করে পেতে পারেন mContext.getPackageName()mContext = yourActivityName.this


15
 public static String getAppNameFromPkgName(Context context, String Packagename) {
    try {
        PackageManager packageManager = context.getPackageManager();
        ApplicationInfo info = packageManager.getApplicationInfo(Packagename, PackageManager.GET_META_DATA);
        String appName = (String) packageManager.getApplicationLabel(info);
        return appName;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
        return "";
    }
}

3

মনে হয় আপনি নতুন প্যাকেজের ইভেন্টটি যুক্ত করতে পেরেছেন তারপরে এই জাতীয় প্যাকেজ সম্পর্কিত সমস্ত প্রাসঙ্গিক তথ্য পাওয়ার জন্য এটি একটি খুব সাধারণ ধারণা যেমন অ্যাপ্লিকেশনটির নাম তাই এখানে ধারণাটি এখানে

-> আপনার ডিভাইস প্যাকেজ ম্যানেজারের সাথে সম্পর্কিত সমস্ত তথ্য রয়েছে তাই কেবল একটি বিষয় তৈরি করুন এটি আপনাকে প্যাকেজের নামের সাথে সম্পর্কিত সমস্ত তথ্য দেবে।

-> আপনার এও মনে রাখা উচিত যে অভিপ্রায়টি আপনাকে "প্যাকেজ: রিয়েল_প্যাকেজ_নাম" দেয় তাই প্রথমে আপনাকে প্রথমে আসল নামটি স্পিলিং (আমার ব্যবহৃত) বা স্ট্রিংয়ের অন্য কোনও সাধারণ প্রয়োগের মাধ্যমে পেতে হবে

-> কোডটি আশা করি আপনি যা চান তা পেয়ে যাবেন আমি কীভাবে অ্যাপের নাম, অ্যাপ্লিকেশন আইকন, অ্যাপ্লিকেশন সংস্করণ, অ্যাপ্লিকেশন সংস্করণ কোড ইত্যাদি পেতে পারি সে সম্পর্কেও তথ্য দিচ্ছি .....

    public class NewAppReciver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals("android.intent.action.PACKAGE_ADDED")){
    String[] a=intent.getData().toString().split(":");
    String packageName=a[a.length-1];

    List<PackageInfo> packageInfoList =          context.getPackageManager().getInstalledPackages(0);
    for (int i = 0; i < packageInfoList.size(); i++) {
        PackageInfo packageInfo = packageInfoList.get(i);
        if(packageInfo.packageName.equals(packageName)){
            String appName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();
            String appVersion = packageInfo.versionName;
            int appVerCode = packageInfo.versionCode;
            Drawable app_icon = packageInfo.applicationInfo.loadIcon(context.getPackageManager());
             }
         }
      }
   }    
}

তবে অ্যাপ্লিকেশন আনইনস্টল করার সময় আপনি কেবল আনইন ইনস্টলেশন হিসাবে প্যাকেজের নাম পেতে পারেন অন্য সমস্ত তথ্য সিস্টেম দ্বারা মুছে ফেলা হবে।


টু স্ট্রিং () যাওয়ার উপায় নয়, অভিপ্রায় থাকা ডেটা কাঠামোযুক্ত।
ওলাফ আঠোভেন

-2
PackageManager pm = getPackageManager();

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.MAIN");
filter.addCategory("android.intent.category.HOME");
filter.addCategory("android.intent.category.DEFAULT");

Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(), TestReplaceHomeAppActivity.class.getName());

ComponentName[] components = new ComponentName[] {new ComponentName("com.android.launcher", "com.android.launcher.Launcher"), component};

pm.clearPackagePreferredActivities("com.android.launcher");
pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, components, component);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.