权限拒绝:启动 Intent 未从 uid 导出

2023-12-22

当我从我自己的应用程序打开手机中已安装的应用程序时,我遇到了这个问题。

权限拒绝:启动 Intent { act=android.intent.action.MAIN 猫=[android.intent.category.LAUNCHER] cmp=com.qq.reader/.widget.picbrowser.PictureActivity } 来自 ProcessRecord{3823559b 16851:com.pax.market.android.app/u0a322} (pid=16851,uid=10322)未从 uid 导出 10324

  public static void openApp(Activity activity,String packageName) {
    PackageInfo pi;
    try {
        pi = activity.getPackageManager().getPackageInfo(packageName, 0);
        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.setPackage(pi.packageName);
        PackageManager pManager = activity.getPackageManager();
        List apps = pManager.queryIntentActivities(
                resolveIntent, 0);

        ResolveInfo ri = (ResolveInfo) apps.iterator().next();
        if (ri != null) {
            packageName = ri.activityInfo.packageName;
            String className = ri.activityInfo.name;
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            ComponentName cn = new ComponentName(packageName, className);
            intent.setComponent(cn);
            activity.startActivity(intent);
        }
    } catch (NameNotFoundException e) {
        Log.e(TAG, "Package Name not found: " + e.getMessage() + ", App is not installed.");
    } catch (SecurityException e){
        SnackBar.newBuilder().activity(activity).
                text(activity.getString(R.string.permission_denied_to_open))
                .build().show();
    }
}

`


列出应用程序 = pManager.queryIntentActivities(resolveIntent, 0); 将发现不止一项活动。

例如:应用程序名称:QQReader,包名称:com.qq.reader。

你会发现两项活动:

com.qq.reader.widget.picbrowser.PictureActivity

com.qq.reader.activity.SplashActivity

PictureActivity无法启动,因为exported=false,所以SplashActivity可以启动

代码修改如下:

public static void  openApp(Activity activity,String packageName) {
PackageInfo pi;
try {
    pi = activity.getPackageManager().getPackageInfo(packageName, 0);
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.setPackage(pi.packageName);
    PackageManager pManager = activity.getPackageManager();
    List<ResolveInfo> apps = pManager.queryIntentActivities(
            resolveIntent, 0);
    for(ResolveInfo app: apps){

        Log.d(TAG,String.format("%s %s",app.activityInfo.packageName,app.activityInfo.name));
        packageName = app.activityInfo.packageName;
        String className = app.activityInfo.name;
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        try {
            activity.startActivity(intent);
        }catch(SecurityException e){
            e.printStackTrace();
        }
    }
  /*  ResolveInfo ri = (ResolveInfo) apps.iterator().next();
    if (ri != null) {
        packageName = ri.activityInfo.packageName;
        String className = ri.activityInfo.name;
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        activity.startActivity(intent);
    }*/
} catch (PackageManager.NameNotFoundException e) {
    Log.e(TAG, "Package Name not found: " + e.getMessage() + ", App is not installed.");
} catch (SecurityException e){
    SnackBar.newBuilder().activity(activity).
            text(activity.getString(R.string.permission_denied_to_open))
            .build().show();
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

权限拒绝:启动 Intent 未从 uid 导出 的相关文章

随机推荐

  • Apache Camel 中的 OnCompletion() 被多次调用

    在routeBuilder类中 它有很多路由 完成所有路由后需要调用testMethod 但目前testMethod 方法被调用很多次 onCompletion bean TestProcessor class testMethod end
  • 查找作者修改的所有当前行

    我如何在 git 中确定来自特定作者的所有仍然存在的行 举例来说 托尼曾参与我的项目 我想找到我的开发分支中仍然存在且来自托尼创作的提交的所有行 也许只是git blame FILE grep Some Name 或者 如果您想递归地责备
  • TensorFlow - 在 fit_generator 中使用 class_weights 会导致内存泄漏

    在 TensorFlow 中 当在 fit generator 中使用 class weights 时 会导致训练过程不断消耗越来越多的 CPU RAM 直至耗尽 每个时期之后内存使用量都会逐步增加 请参阅下面的可重现示例 为了保持可重现的
  • 了解 Python 中列表推导式的扁平化列表

    我发现这种理解非常适合扁平化列表列表 gt gt gt list of lists 1 2 3 2 3 4 3 4 5 gt gt gt item for sublist in list of lists for item in subli
  • 用堆栈实现的 LL(1) 解析器:如何构建 AST?

    我目前正在手工构建一个解析器 它是一个 LL 1 解析器 目前 它是一个很棒的识别器 它的函数 parse List tokens 决定标记是否是该语言的成员 现在 我想为该输入构建相应的 AST 但是 我知道如何以递归下降的方式实现它 已
  • 如何以及在哪里编写 Webform 提交钩子?

    我是 Drupal 7 的新手 因此在以下情况下需要一些帮助 我创建了一个 Webform 我也有其他 Webform 现在我希望将此 webfrom 插入到 myTable 中 而不是插入默认的 webform subscribed da
  • ant 不支持的major.minor版本52.0

    这让我抓狂 当运行任何 ant 命令时 甚至ant version 我在 Mac OSX 上总是收到以下错误 线程 main 中的异常java lang UnsupportedClassVersionError org apache too
  • Jquery AJAX 保存到文件

    这里的一切都工作正常 除了在保存的文件中它没有给我整个字符串 只有一个 ID 页面上有多个 不知道如何获取 ajax 中的 所有 ID 和内容 我究竟做错了什么 已经得到这个jquery a exportPage on click func
  • 如何获取 BlackBerry 上的后台进程列表

    我正在寻找与 net rim device api system ApplicationManager getVisibleApplications 相对应的内容 但包括可能没有 UI 的应用程序 有任何想法吗 欢迎不合理复杂的解决方案 我
  • switch case 在 C 中无法正常工作

    我的程序中有一个小问题 当我按 2 或 3 或 4 时 它将正确显示 但之后当我 按 a 或 b 或 c 等 它将显示前一个结果而不是打印 Invalid 选项 我怎样才能解决这个问题 include
  • 函数式语言编译器相对于命令式语言编译器的优势

    作为这个问题的后续与 C 相比 F 的内置不变性有哪些优点 https stackoverflow com questions 2194201 what are the advantages of built in immutability
  • 需要更好、更简单地理解 CATransform3D

    请浏览这些图像 这是我从一些在线资源获得的代码 它确实改变了我的对象 除此之外 我一无所知 我是 CATransform3D 的新手 想确切地了解它是如何工作的 CATransform3D transform CATransform3DId
  • 哪个本地数据库适合我的情况?

    我将构建一组应用程序 其中一个应用程序是无人值守应用程序 用 VB6 编写 它将将从各种来源接收的数据写入本地数据库 所有其他应用程序 将在 VS 2008 c 3 0 中编写 将读取此数据 主要是出于报告原因 我不想要 SQL Serve
  • 这个声明有什么作用? console.log.bind(控制台)

    我正在使用 JavaScript 并遇到语句问题 console log bind console 请告诉我这个声明实际上做了什么 我已多次应用此方法 但没有任何作用 在 JavaScript 中 this函数调用内由下式确定how该函数被
  • iOS 自定义键盘 - 相机不工作

    我想创建一个自定义键盘 充当条形码扫描仪 我已经完成了整个编码 但输出并不符合预期 我被要求提供相机权限 第一次 但相机没有向视图发送视频 我认为 出于安全原因 使用键盘可能会受到一些限制 1 打开手电筒 void turnFlashOn
  • 将 csv 文件合并到一个文件中

    我有一组 csv 文件 我想将它们合并到一个 csv 文件中 需要一些时间 但我在目标路径中找不到该文件 hdfs dfs getmerge DATA data1 result csv 任何帮助 谢谢 getmerge Usage hado
  • Unix:调用 select() 时读取文件描述符关闭时会发生什么

    假设我在包含一堆读取文件描述符的 FD SET 上调用 select 如果在 select 调用期间 文件描述符之一关闭 会发生什么情况 假设发生某种错误 那么我有责任从集合中查找并删除已关闭的文件描述符吗 我不相信这是在任何地方指定的 某
  • 为什么 Rails 4scaffold 创建 json.jbuilder 文件?

    我使用以下命令生成了一个新的 Rails 4 rc1 项目rails new并使用生成了一个脚手架rails g scaffold 正如预期的那样 它已经创建了迁移 控制器和所有必需的视图文件 它还创建了 show json jbuilde
  • 使用 VBA 选择单个节点 XML 对象

    您好 我正在尝试访问下面的 XML 响应对象
  • 权限拒绝:启动 Intent 未从 uid 导出

    当我从我自己的应用程序打开手机中已安装的应用程序时 我遇到了这个问题 权限拒绝 启动 Intent act android intent action MAIN 猫 android intent category LAUNCHER cmp