getlaunchintentforpackage 返回 null

ale*_*ann 6 android android-package-managers

有人可以告诉我为什么这会给我变量nullintent吗?

public class MainActivity extends AppCompatActivity {
    private static String action = "com.google.android.youtube";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onResume() {
        super.onResume();
        this.launch();
    }

    public void launch() {
        PackageManager pm = getPackageManager();
        Intent intent = pm.getLaunchIntentForPackage(action);
        System.out.println("debug: " + intent);
        //startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在 Pixel 4 上测试了这个,但我从来没有卸载 YouTube。另外,sidequest 列出了应用程序并给了我包com.google.android.youtube

Com*_*are 10

对于许多(也许是大多数)PackageManager方法,在 Android 11 及更高版本上,您需要考虑包可见性规则,并向清单添加一个<queries>元素,以声明您有兴趣发现或分析哪些第三方应用。