私のアプリは、アカウントの種類からアプリケーション名を知る必要があります。コードからアカウントの種類を取得しています:
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);
}
}
たとえば、「com.whatsapp」としてアカウントの種類を取得していますが、「Whats App」という名前が必要です。
編集 Facebook、Viber、Whats アプリ、スカイプなど、デバイスに多くのアカウントを持っています。
スカイプの場合、アカウントの種類を com.skype.contacts.sync として取得しています
コードを次のように使用しました:
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();
}
アプリ名を取得すると、次のエラーが発生しました:
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)
Googleで検索しましたが、タスクを達成できませんでした。このために私は何をすべきか教えてください...