Android 获取app启动来源(是被谁启动的、被哪个第三方app启动?)

这篇具有很好参考价值的文章主要介绍了Android 获取app启动来源(是被谁启动的、被哪个第三方app启动?)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、需求:需要知道当前app或者当前app的指定页面是被谁启动的,被哪个第三方app启动的,来判断是否允许对方启动,如果不被允许的第三方,则不启动app或者不启动app的指定页面。

2、直接上代码。

第一种方式:

// 结果:  android-app://com.google.a
getReferrer();

第二种方式:

/**
     * 通过反射获取referrer.
     * @return  : com.google.a
     */
    private String reflectGetReferrer() {
        try {
            Field referrerField =
                    Activity.class.getDeclaredField("mReferrer");
            referrerField.setAccessible(true);
            return (String) referrerField.get(this);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return "";
    }

调用方式:文章来源地址https://www.toymoban.com/news/detail-526993.html

public class OpenActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.open_activity);
        // TextView test = findViewById(R.id.test_open);
        // test.setText("第二页面");

        // getReferrer(): android-app://com.google.a
        String packageName1= getReferrer().toString();
        Log.e("SecondActivity", "getReferrer(): " + packageName1);
        // reflectGetReferrer(): com.google.a
        String packageName2 = reflectGetReferrer();
        Log.e("SecondActivity", "reflectGetReferrer(): " + reflectGetReferrer());
        Toast.makeText(getApplicationContext(),"getReferrer(): " + getReferrer()
                + " ,reflectGetReferrer(): " + reflectGetReferrer(), Toast.LENGTH_LONG).show();
        if (!packageName1.endsWith("com.google.a")
                && !"com.google.a".equalsIgnoreCase(packageName2)) {
            // com.google.a  白名单包名,非这个包名则关闭页面。
            finish();
        }
    }

    /**
     * 通过反射获取referrer.
     * @return  : com.google.a
     */
    private String reflectGetReferrer() {
        try {
            Field referrerField =
                    Activity.class.getDeclaredField("mReferrer");
            referrerField.setAccessible(true);
            return (String) referrerField.get(this);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return "";
    }
}

到了这里,关于Android 获取app启动来源(是被谁启动的、被哪个第三方app启动?)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 11以上获取不到第三方app是否安装

    开年第一篇,处理了一下年前的小问题。 问题:本地app跳转到第三方app地图进行导航,获取不到第三方地图是否安装。 解决: 1.添加包名  This can be done by adding a  queries  element in the Android manifest.在app下的manifest文件内manifest标签下添加 queries标签设置包名 2.MapUtil工具类 3.调用

    2024年02月19日
    浏览(54)
  • Android获取App冷启动、热启动时间

    启动模拟器或者连接手机,通过adb命令的方式获取App冷启动、热启动时间。 启动App的adb命令: -W:启动完成之后,返回启动耗时。 比如,我的packagename是com.example.myapplication,我的MainActivity的配置如下: 则adb启动命令为 一、冷启动时间(如果应用启动过,则从最近任务杀进程

    2024年02月05日
    浏览(78)
  • 如何查看端口是被哪个程序占用的

    一、开始----运行----cmd,或者是window+R组合键,调出命令窗口 二、输入命令: netstat -ano ,列出所有端口的情况。在列表中我们观察被占用的端口,比如是 8080 ,首先找到它。 三、查看被占用端口对应的PID,输入命令: netstat -aon|findstr \\\"8080\\\" ,回车,记下最后一位数字,即PI

    2024年02月13日
    浏览(44)
  • Android 10.0 pms中关于启动app时获取app的ActivityInfo信息相关源码分析

     在android10.0的系统rom定制化开发中,在对于app启动时,通过Launcher调用pms来查询app的相关ActivityInfo的相关信息,然后调用 ams来启动activity,这篇来分析pms中获取app的ActivityInfo的相关信息的相关源码分析

    2024年02月02日
    浏览(62)
  • 微信开放平台申请移动应用时如何获取已经安装的第三方app的应用签名

    一.问题描述 当我们在微信开放平台申请移动应用时,进行到了如下步骤,需要获取应用签名,下面给出解决方案 二.问题解决 先来到微信提供的获取应用签名网页下载获取应用签名的app,网址如下: https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html 点击网址进入如

    2024年02月16日
    浏览(51)
  • Android 12.0系统默认授予读写权限给第三方app

     在12.0的系统rom定制化开发中, 在6.0以前读写权限是默认授予的,app不需要申请权限 在10.0之前需要android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE 权限就可以了而在安卓11的时候继续强化对SD卡读写的管理,引入了MANAGE_EXTERNAL_STORAGE权限,而之前的WRITE_EXTER

    2024年02月12日
    浏览(60)
  • Android 13.0 在系统app安装第三方app弹出 解析安装包出现问题 的解决方案

    在13.0的系统定制化开发中,对于系统内置app中用代码调用系统安装接口安装app时抛出Permission Denial: that is not exported from UID 1000的异常,查询资料这个异常发现通常是由于Uri权限导致的问题,这就需要看PMS在安装的时候,需要什么权限,然后根据相关的日志分析 相关的安装流程

    2024年02月10日
    浏览(50)
  • Android 12.0Launcher3 禁止卸载某个第三方app

    在12.0的系统rom开发中,预安装的方法来安装这个app.然后在Launcher3 拖拽卸载时,不让他卸载接下来就看Launcher3 app 长按卸载的流程 在luncher.xml中 drop_targe_bar.xml

    2024年02月07日
    浏览(48)
  • android 12.0 第三方输入法app设置系统默认输入法

    在12.0的产品开发中,有功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置输入法的相关功能需求,然后根据输入法包名来设置默认输入法 在设置系统默认输入法中 每个系统输入法的id不同 根据id设置输入法 需要先根据需要设置默认输入法的id,来

    2024年02月07日
    浏览(62)
  • Android 14.0 添加自定义服务,并生成jar给第三方app调用

    在14.0系统ROM产品定制化开发中,由于需要新增加自定义的功能,所以要增加自定义服务,而app上层通过调用自定义服务,来调用相应的功能,所以系统需要先生成jar,然后生成jar 给上层app调用,接下来就来分析实现的步骤,然后来实现相关的功能 从而来实现所需要的功能 在

    2024年04月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包