2

My app need to know the application name from the account type. I am getting the account type from the code :

AccountManager am = AccountManager.get(this);
Account[] acc = am.getAccounts();
if (acc.length > 0) {
    for (int accLength = 0; accLength < acc.length; accLength++) {
            Log.d("Accounts : ", "" + acc[accLength].name+"-"+ acc[accLength].type);                
    }
}

For example i am getting the account type as "com.whatsapp" but i want the name as "Whats App".

Edit I am having many accounts in my device for example face book, viber, whats app, skype etc.

For skype i am getting the account type as com.skype.contacts.sync

and used the code as :

PackageManager packageManager = getApplicationContext().getPackageManager();
try {
    String appName = (String) packageManager.getApplicationLabel(packageManager.getApplicationInfo(acc[accLength].type, PackageManager.GET_META_DATA));
    Log.d("AppName", "" + appName);
} catch (NameNotFoundException e) {
    e.printStackTrace();
}

to get the app name and i got following error :

11-03 11:38:10.681: W/System.err(4684): android.content.pm.PackageManager$NameNotFoundException: com.skype.contacts.sync
11-03 11:38:10.681: W/System.err(4684):     at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:243)
11-03 11:38:10.681: W/System.err(4684):     at com.example.cd.SplashScreenActivity.initializeScreen(SplashScreenActivity.java:48)
11-03 11:38:10.681: W/System.err(4684):     at com.example.cd.SplashScreenActivity.onCreate(SplashScreenActivity.java:33)
11-03 11:38:10.681: W/System.err(4684):     at android.app.Activity.performCreate(Activity.java:5541)
11-03 11:38:10.681: W/System.err(4684):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
11-03 11:38:10.681: W/System.err(4684):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
11-03 11:38:10.681: W/System.err(4684):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507)
11-03 11:38:10.681: W/System.err(4684):     at android.app.ActivityThread.access$900(ActivityThread.java:172)
11-03 11:38:10.681: W/System.err(4684):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
11-03 11:38:10.681: W/System.err(4684):     at android.os.Handler.dispatchMessage(Handler.java:102)
11-03 11:38:10.681: W/System.err(4684):     at android.os.Looper.loop(Looper.java:146)
11-03 11:38:10.686: W/System.err(4684):     at android.app.ActivityThread.main(ActivityThread.java:5692)
11-03 11:38:10.686: W/System.err(4684):     at java.lang.reflect.Method.invokeNative(Native Method)
11-03 11:38:10.686: W/System.err(4684):     at java.lang.reflect.Method.invoke(Method.java:515)
11-03 11:38:10.686: W/System.err(4684):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
11-03 11:38:10.686: W/System.err(4684):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
11-03 11:38:10.686: W/System.err(4684):     at dalvik.system.NativeStart.main(Native Method)

I searched on Google but not able to achieve the task. Please suggest me what should i do for this...

Manoj Fegde
  • 4,786
  • 15
  • 50
  • 95
  • You could use the package manager to get the app name from the package name, like this: http://stackoverflow.com/questions/5841161/get-application-name-from-package-name – Eric B. Nov 03 '15 at 05:54
  • account type is the package name and using PackageManager you can get the application name. – Vibhor Chopra Nov 03 '15 at 06:05
  • Please have a look on my edited question – Manoj Fegde Nov 03 '15 at 09:36
  • @VibhorChopra It's not always. For example, we have "com.google", which is not a package name of any app. Not to mention "" (empty string) as account type, which is of the device itself. – android developer Feb 28 '21 at 09:04

0 Answers0