发送意图的进程的 Pid

2023-12-05

我正在尝试发现向我发送意图的进程的进程 ID 或包名称。我不想将进程 ID 或包名称放在额外的内容中(正如其他一些问题所要求的那样),因为我不想允许欺骗。我使用的代码是:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_secure_file_share);
    ...   

    Intent intent = getIntent();

    if (intent != null)
    {
        // get the caller
        String callingPackage = getAppNameByPID(getApplicationContext(),
               Binder.getCallingPid());
    ....
    }
 }

Where getAppNameByPID将 PID 转换为包名称。问题是Binder.getCallingPid()始终返回接收者的 PID(而不是调用者的)。

如何获取调用者的PID?


我也尝试过,但只能使用绑定服务获得结果。

@Override
public IBinder onBind(Intent intent) {
    @SuppressWarnings("static-access")
    int uid = mBinder.getCallingUid();

    final PackageManager pm = getPackageManager();
    String name = pm.getNameForUid(uid);

    Log.d("ITestService", String.format("onBind: calling name: %s"), name);

    //name is your own package, not the caller

    return mBinder;
}

但是如果你实现 AIDL 的存根:

private final ITestService.Stub mBinder = new ITestService.Stub() {
    public void test() {
        //Get caller information
        //UID
        int uid = Binder.getCallingUid();

        final PackageManager pm = getPackageManager();
        String name = pm.getNameForUid(uid);        
        //name will be sharedUserId of caller, OR if not set the package name of the caller

        String[] packageNames = pm.getPackagesForUid(uid);
        //packageNames is a array of packages using that UID, could be more than 1 if using sharedUserIds

        Log.d("ITestService", String.format("Calling uid: %d (getNameForUid: %s)", uid, name));
        for (String packageName : packageNames) {
            Log.d("ITestService", String.format("getPackagesForUid: %s", packageName));
        } 

        //PID
        int pid = Binder.getCallingPid();
        Log.d("ITestService", String.format("Calling pid: %d", pid));
        String processName = "";

        ActivityManager am = (ActivityManager) getSystemService( ACTIVITY_SERVICE );
        List<ActivityManager.RunningAppProcessInfo> processes = am.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo proc : processes) {
            if (proc.pid == pid) {
                processName = proc.processName;
                Log.d("ITestService", String.format("Found ProcessName of pid(%d): %s", pid, processName));

                //processName will be the package name of the caller, YEAH!
            }
        }
    }
}

如果你想知道哪个包调用了它,PID 将是最可靠的。

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

发送意图的进程的 Pid 的相关文章

  • APK META-INF/library_release.kotlin_module 中复制的重复文件

    我最近通过 JitPack 添加了两个 Android 库 但出现以下错误 Duplicate files copied in APK META INF library release kotlin module 我已经清除了缓存 并尝试使
  • 更改首选项的背景颜色

    我有一个PreferenceCategory xml 文件 我已经在其中定义了所有首选项 我从扩展的类中调用它PreferenceActivity 我无法设置设置屏幕的背景 该屏幕是在如下所示的 xml 文件的帮助下显示的 请看我已经定义了
  • fresco 的 Proguard 错误

    我正在使用 ProGuard 当我在发布配置中运行项目时 出现以下错误 Warning com facebook imagepipeline bitmaps DalvikBitmapFactory can t find referenced
  • Sqlite 查询检查 - 小于和大于

    return mDb query DATABASE TABLE new String KEY ROWID KEY LEVEL KEY LEVEL gt 3 lt 5 null null null null 我究竟做错了什么 它返回的值全部高
  • 任务“:app:checkReleaseDuplicateClasses”执行失败

    我的 React Native Android 构建中突然出现构建问题 令人惊讶的是 它是早上建好的 没有做任何改变 但突然就失败了 这就是我得到的错误 知道为什么会发生这种情况吗 在 stack 和 GitHub 中也看到了一些类似的问题
  • android - 过度绘制布局允许通过 LinearLayout 进行触摸

    在下面的 UI 中 我将下面的 drabable 覆盖了整个屏幕 LinearLayout 是透明的 并允许其下方的控件可单击或可触摸 基本上我可以滚动此 LinearLayout 下面的列表以及单击控件 我如何禁用它 See attach
  • Android Studio磁盘空间不足如何解决?

    我随机收到此错误 并且不确定为什么 Android Studio 的磁盘空间变低 Android Studio 系统目录分区磁盘空间不足 Update 此应用程序安装在运行 10 10 1 的 Mac 上 具有 251GB 内部存储和占用
  • 不使用 CookieManager 的 Android 会话 cookie

    我的应用程序进行多次网络调用以获得身份验证 我需要将此会话存储在 cookie 中 我想使用 Cookie Manager 但经过一些研究后 我发现它仅适用于 API 9 及更高版本 并且我的应用程序需要向后兼容 我使用 HTTPURLCo
  • MAT(Eclipse 内存分析器)- 如何从内存转储中查看位图

    I m analyzing memory usage of my Android app with help of Eclipse Memory Analyzer http www eclipse org mat also known as
  • ImageButton 拉伸背景图像

    我正在尝试创建一个没有边框的 ImageButton 但遇到了图像按钮大小的问题 我使用 Eclipse ADT 将 ImageButton 拖到布局中并选择背景图像 图像按钮显示如下 正如您所看到的 背景图像和图像按钮周边之间有一个边框
  • 如何使用 onSearchRequested() 调用搜索对话框

    我正在尝试实现搜索对话框 但无法显示活动中的搜索 我在清单文件中定义了主要活动 此活动向用户显示了他们必须从中选择的选项列表 选项之一是 搜索 选项
  • 使用startActivityForResult,如何获取子活动中的requestCode?

    我有四项活动 即 A B C 和 D 我的情况是A将通过startActivityForResult启动活动B startActivityForResult new Intent this B class ONE 在另一种情况下 我将使用不
  • 如何在Android中隐藏应用程序标题? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想隐藏应用程序标题栏 您可以通过编程来完成 import android app Activity import android os
  • 改造Android基本且简单的问题

    我的服务器返回简单的 Json 结果 如下所示 message Upload Success 我正在尝试将结果放入改造模型类中 public class MyResponse SerializedName message String me
  • MPAndroidChart:组合图表

    我在用MPAndroidChart 库 https github com PhilJay MPAndroidChart 我想用CombinedChart创建这样的图表 那可能吗 我尝试了一下 但似乎不起作用 因为 这些条目没有按我的预期工作
  • 找不到资源矢量绘图的异常

    我将在某些设备上运行我的应用程序 其崩溃日志如下 01 04 16 54 02 206 7466 7466 com lawnmowers E AndroidRuntime FATAL EXCEPTION main Process com l
  • 我可以在主线程上读取一个小 txt 文件,还是应该始终避免那里的 I/O?

    我正在读取一个小的 json 文件 其中有几行 它存储在用户设备的内部应用程序文件夹中 我所做的就是这样 JSONObject jsonObject new JSONObject MyUtils inputStreamToString My
  • RecyclerView元素更新+异步网络调用

    我有一个按预期工作的回收视图 我的布局中有一个按钮可以填充列表 该按钮应该进行异步调用 根据结果 我更改按钮的外观 这一切都发生得很好 但是 当我单击按钮并快速向下滚动列表时 异步调用的结果会更新新视图的按钮 代替旧视图的视图 我该如何处理
  • Android:列“_id”不存在

    我收到这个错误 IllegalArgumentException 列 id 不存在 当使用SimpleCursorAdapter从我的数据库中检索 该表确实有这个 id柱子 注意到这是一个常见问题 我尝试根据网上的一些解决方案来解决它 但它
  • Android 中带有无尽列表视图滚动的 AsyncTask

    我正在创建一个应用程序 其中我需要有无限的滚动列表视图 我不想在我的应用程序中使用任何库 我在网上看到了一些有助于实现此类列表视图的示例 但我的疑问是 当我的数据来自服务器并在异步任务中进行解析时 如何才能拥有无尽的列表视图 如何从滚动异步

随机推荐

  • 带有隐藏 UIView 的自动布局?

    我觉得这是一个相当常见的显示 隐藏范例UIViews 最经常UILabels 取决于业务逻辑 我的问题是 使用 AutoLayout 响应隐藏视图的最佳方法是什么 就好像它们的框架是 0x0 一样 以下是包含 1 3 个功能的动态列表的示例
  • vbscript 下载文件(绕过无效证书错误)

    dim xHttp Set xHttp createobject microsoft xmlhttp dim bStrm Set bStrm createobject Adodb Stream xHttp Open GET https ww
  • 从 R 中的 POSIXct 中提取 2 位数小时

    我想从a中提取小时POSIXctR 中的时间 但检索 2 位数答案 例如 test as POSIXct 2015 03 02 03 15 00 test 1 2015 01 02 03 15 00 GMT month testing 1
  • Java:调用超级方法,该方法调用被重写的方法

    public class SuperClass public void method1 System out println superclass method1 this method2 public void method2 Syste
  • 如何使用OpenCV2.0和Python2.6调整图像大小

    我想使用OpenCV2 0和Python2 6来显示调整大小的图像 我使用并采用了this示例 但不幸的是 此代码适用于 OpenCV2 1 似乎不适用于 2 0 这是我的代码 import os glob import cv ulpath
  • 如何在 jQuery 中使用 dataType 'text' 进行跨域 ajax?

    在我的 javascript 函数中 我称之为 ajax 它工作正常 但只有当我访问网页时firebird服务器 我的电脑上有相同的代码testing服务器 ajax 要求下载一些文件 但只有 firebird 服务器有其 ip 向我们的客
  • 在unix下同步四个shell脚本依次运行

    我有 4 个 shell 脚本来生成一个文件 假设是 param txt 该文件由另一个工具 informatica 使用 并且当该工具完成处理时 它会删除 param txt 这里的目的是所有四个脚本都可以在不同的时间调用 比如上午 12
  • 注意:PHP 中未初始化的字符串偏移量

    嗨 我有这个函数 它返回一个通知 注意 未初始化的字符串偏移量 function generaterandomkey length string characters 0123456789abcdef for p 0 p lt length
  • 如何创建右上角带有完成按钮的 UIKeyboard?

    我需要展示UIKeyboard右上角有 完成 按钮 请查看附图 任何帮助将不胜感激 这可能对你有帮助 请检查一下BS键盘控制
  • C# 自定义组合框排序

    是否可以在组合框中自定义排序 显示顺序 假设我在所有其他值之前想要一个特殊值 MasterValue 不要添加字符串 而是创建一个实现 IComparable 并重写 ToString 的类 将该类的实例添加到您的 ComboBox
  • 将 SMS api 与 woocommerce 集成,不发送消息

    我正在将 SMS API 与 WooCommerce 集成 以便每当在现场进行任何购买时都会向客户的手机发送自动订单更新 下面是我的代码 add action woocommerce payment complete custom proc
  • 如何使用宏将数字格式化为文件名中至少有 5 位数字?

    我正在开发一个宏 其中涉及生成文件名并将 Excel 工作表保存为具有该名称的 pdf 我能够生成目标文件夹名称 如下所示 user name Environ UserName file dir C Users user name Docu
  • 为什么 JSON.parse 会因空字符串而失败? [复制]

    这个问题在这里已经有答案了 为什么 JSON parse 产生错误 Uncaught SyntaxError Unexpected end of input 如果直接返回不是更符合逻辑吗null 编辑 这不是链接问题的重复 虽然最小有效 j
  • Perl 正则表达式:剪切和粘贴

    我正在尝试使用 perl 编辑文件 本质上是剪切和粘贴文件中的内容 但是 看来我错误地构建了正则表达式 我很乐意帮助解决它 替换命令shouldcut 剪切之后的内容export PATH PATH直到但是not包括 THIS IS LAS
  • R - 多个嵌套循环

    我正在尝试编写一个嵌套循环代码来模拟 101 行数据框中的 10 列数据 第一行数据已被指定为起始值 每列应该不同 因为我的矩阵 r 是从随机法线生成的 但是 每列中的结果值完全相同 为循环索引提供一些上下文 tmax 100 ncol p
  • 在 Windows 8 上使用 gem 安装 SASS

    我尝试在 Windows 8 x64 上安装 SASS 但即使防火墙已关闭 仍然出现错误 我发出这个命令 C Ruby200 x64 bin gt gem install sass or C Ruby200 x64 bin gt ruby
  • Bootstrap 滑动选项卡(不是选项卡内容)

    我正在开发一个项目并使用 Bootstrap Tabs 作为我的选项卡 用户可以创建新选项卡 因此问题是 超过N选项卡 其中N取决于浏览器的宽度 导致此行为 我浏览了一下 Bootstrap HTML 选项卡代码 选项卡是li里面的元素ul
  • 如何获取客户端的计算机名称

    我在另一篇文章中看到了这个问题 但解决方案无法正常工作 我用 System Net Dns GetHostEntry HttpContext Current Request ServerVariables Item REMOTE HOST
  • 在 Tkinter 中向按钮添加图像

    我正在尝试将图像添加到按钮 但是当我尝试执行当前代码时遇到一些问题 它所显示的只是一张没有文字的图像 我也看不到按钮 有什么方法可以修复我当前的代码吗 from tkinter import import tkinter as tk roo
  • 发送意图的进程的 Pid

    我正在尝试发现向我发送意图的进程的进程 ID 或包名称 我不想将进程 ID 或包名称放在额外的内容中 正如其他一些问题所要求的那样 因为我不想允许欺骗 我使用的代码是 Override public void onCreate Bundle