相关疑难解决方法(0)

对于某些应用程序,getLaunchIntentForPackage为null

我正在构建一项服务,将安装的应用程序列表从Android TV或Fire TV发送到手机.然后,手机会发回它想要启动的应用程序的程序包名称,然后服务就会启动它.

这是创建列表的代码

public List<InstalledApp> GetInstalledApps(boolean isAndroid) {
    PackageManager pm = getPackageManager();
    List<ApplicationInfo> allPackages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    List<InstalledApp> userPackages = new ArrayList<InstalledApp>();

    for (ApplicationInfo packageInfo : allPackages) {

        if (isSystemPackage(packageInfo)) continue;

        InstalledApp app = new InstalledApp();
        app.setPackageName(packageInfo.packageName);
        app.setAppName(pm.getApplicationLabel(packageInfo).toString());
        if (!isAndroid) {
            app.setIcon(pm.getApplicationIcon(packageInfo));
        }
        app.setAccentColor(getAccentColor(pm.getApplicationIcon(packageInfo)));


        userPackages.add(app);
    }

    return userPackages;
}
Run Code Online (Sandbox Code Playgroud)

这就是我启动应用程序的方式

public void launchApp(String packageName) {
    PackageManager pm = getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage(packageName);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

在Fire TV上,一切都很完美,但在Android TV上,许多应用程序的意图始终为空.这些才一点点.

  • com.haystack.android
  • com.netflix.ninja
  • tv.pluto.android
  • com.bamnetworks.mlbtv

但是使用相同的代码,这些应用程序工作正常.

  • com.hulu.livingroomplus
  • com.sling
  • com.frogmind.badland
  • com.songza.tv

谁能提供任何有关我可能做错的见解?

谢谢!

编辑: …

android android-tv amazon-fire-tv nexus-player

18
推荐指数
3
解决办法
2万
查看次数

即使存在 try/catch 块,应用程序也会因空对象引用上的“boolean android.content.Intent.migrateExtraStreamToClipData()”崩溃

我正在尝试使用软件包名称打开某些应用程序,为此我使用了以下代码:

public void openAppHavingPackageName(String packageName, String appName) {
        try {
            Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(packageName);
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Log.e(TAG, e.getMessage());
        }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试打开手机中安装的应用程序时,它工作正常,但是当我尝试打开手机中没有的应用程序时,应用程序崩溃并出现以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference

在线上

startActivity(intent);

如您所见,我在try/catch那里有一个块,那么为什么没有捕获异常,而是运行代码导致崩溃?

android try-catch nullpointerexception android-package-managers activitynotfoundexception

5
推荐指数
1
解决办法
3718
查看次数