【发布时间】:2017-06-20 11:09:03
【问题描述】:
我正在从 android 加载所有应用程序,然后将它们显示在我的启动器中(图标 + 名称)。代码如下所示:
public class PhoneAppItem
{
String mPackageName = null;
String mActivityName = null;
String mName = null;
ActivityInfo mActivityInfo = null;
public PhoneAppItem(String packageName, String activityName)
{
mPackageName = packageName;
mActivityName = activityName;
}
public void loadInfo()
{
PackageManager pm = MainApp.get().getPackageManager();
try
{
// following line throws the exception!
mActivityInfo = pm.getActivityInfo(new ComponentName(mPackageName, mActivityName), 0);
// some other code...
}
catch (PackageManager.NameNotFoundException e)
{
L.e(e);
mName = mPackageName;
}
catch (NullPointerException e)
{
L.e(e);
mName = mPackageName;
}
}
}
我的所有 PhoneAppItem 项目的包名称和活动名称检索如下(对于 android
List<PhoneAppItem> apps = new ArrayList<>();
ActivityManager activityManager = (ActivityManager) MainApp.get().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfos = activityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos)
{
try
{
ApplicationInfo ai = pm.getApplicationInfo(processInfo.processName, 0);
if (!excludedPackages.contains(ai.packageName))
apps.add(new PhoneAppItem(ai.packageName, ai.className));
}
catch (PackageManager.NameNotFoundException e) {}
}
我现在有一个用户得到以下异常:
android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{com.package.myapp/com.package.myapp.app.MainApp}
at android.app.ApplicationPackageManager.getActivityInfo(ApplicationPackageManager.java:262)
at com.package.myap.classes.PhoneAppItem.h(PhoneAppItem.java:70)
...
观察
- 所有应用都会抛出上述异常,即使是我的自己的应用
- 到目前为止,只有一位使用以下硬件的用户才有此行为:Lenovo Yoga Tablet HD+ (b8080)、Android 4.4.2
问题
有人知道为什么会发生这种情况吗?
【问题讨论】:
-
您是否拥有所需的权限?
-
哪一个?为了获取应用程序列表,我确实在清单中拥有
android.permission.GET_TASKS权限。对于引发异常的PackageManager.getActivityInfo(...)调用,据我所知,不需要任何东西 -
@prom85 您需要定义正确的 ComponentName:new ComponentName=("appName","appname.mainactivity") 检查您的 PhoneAppItem 代码...
-
@prom85 你有设备吗?
-
没有。所以我无法重现这个......
标签: android android-package-managers