2024年Android最全Android修改PackageInstaller自动安装指定应用,字节跳动+京东+360+网易面试题整理

结语

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是目录截图:

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

再附一部分Android架构面试视频讲解:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

@@ -101,6 +102,29 @@ public class InstallAppProgress extends Activity implements View.OnClickListener

clearCachedApkIfNeededAndFinish();

return;

}

  •                if (getIntent().getBooleanExtra("AutoInstall", false) && msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {
    
  •                    Intent  mIntent = getPackageManager().getLaunchIntentForPackage(
    
  •                            mAppInfo.packageName);
    
  •                    boolean enabled = false;
    
  •                    if(mIntent != null) {
    
  •                        List<ResolveInfo> list = getPackageManager().
    
  •                                queryIntentActivities(mIntent, 0);
    
  •                        if (list != null && list.size() > 0) {
    
  •                            enabled = true;
    
  •                        }
    
  •                    }
    
  •                    if (enabled && "com.antutu.benchmark.full".equals(mAppInfo.packageName)) {//如果自动安装的apk是antutufull(3dTest),则>安装完成后自动启动测试
    
  •                        Intent intent = new Intent("com.antutu.benchmark.full.MAROONED_RUN");
    
  •                        intent.setFlags(335544320);
    
  •                        intent.setComponent(new ComponentName("com.antutu.benchmark.full", "com.antutu.benchmark.full.UnityPlayerActivity"));
    
  •                        intent.putExtra("uid", "8939");
    
  •                        startActivity(intent);
    
  •                        //startActivity(mIntent);
    
  •                    }
    
  •                     finish();
    
  •                    return;
    
  •                }
    

// Update the status text

mProgressBar.setVisibility(View.GONE);

// Show the ok button

diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/Pack

index de68582…b85b767 100644

— a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java

+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java

@@ -120,6 +120,35 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen

private static final int DLG_NOT_SUPPORTED_ON_WEAR = DLG_BASE + 7;

private void startInstallConfirm() {

  •      if(mAutoInstall)
    
  •    {
    
  •                Intent newIntent = new Intent();
    
  •                newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO,
    
  •                                                 mPkgInfo.applicationInfo);
    
  •                newIntent.setData(mPackageURI);
    
  •                newIntent.setClass(this, InstallAppProgress.class);
    
  •                String installerPackageName = getIntent().getStringExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME);
    
  •                if (mOriginatingURI != null) {
    
  •                    newIntent.putExtra(Intent.EXTRA_ORIGINATING_URI, mOriginatingURI);
    
  •                }
    
  •                if (mReferrerURI != null) {
    
  •                    newIntent.putExtra(Intent.EXTRA_REFERRER, mReferrerURI);
    
  •                }
    
  •                if (mOriginatingUid != VerificationParams.NO_UID) {
    
  •                    newIntent.putExtra(Intent.EXTRA_ORIGINATING_UID, mOriginatingUid);
    
  •                }
    
  •                if (installerPackageName != null) {
    
  •                    newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,installerPackageName);
    
  •                }
    
  •                if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
    
  •                    newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
    
  •                    newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
    
  •                }
    
  •                newIntent.putExtra("AutoInstall", true);
    

总结

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后如何才能让我们在面试中对答如流呢?

答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:

这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作!

这些只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢再关注一下~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于Android 12的使用PackageInstaller类卸载应用并使用IntentSender类接收卸载结果的Java代码示例: ``` private void uninstallPackage(String packageName) { PackageInstaller packageInstaller = getContext().getPackageManager().getPackageInstaller(); PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); int sessionId = packageInstaller.createSession(params); PackageInstaller.Session session = packageInstaller.openSession(sessionId); try { session.uninstall(packageName, createIntentSenderForUninstall(packageName)); } catch (IOException e) { e.printStackTrace(); } } private IntentSender createIntentSenderForUninstall(String packageName) { Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE); intent.setData(Uri.parse("package:" + packageName)); PendingIntent pendingIntent = PendingIntent.getActivity(getContext(), 0, intent, 0); return pendingIntent.getIntentSender(); } ``` 在这个示例中,我们首先获取PackageInstaller实例,然后创建一个安装会话并打开它。接下来,我们使用会话对象调用uninstall方法来卸载指定应用程序,并传递createIntentSenderForUninstall方法返回的IntentSender对象以接收卸载结果。 createIntentSenderForUninstall方法创建一个Intent对象,该Intent对象指定要卸载的应用程序,并将其封装在PendingIntent对象中。最后,我们从PendingIntent对象中获取IntentSender对象以便在卸载过程完成时接收结果。 请注意,此代码使用的是Android 12中的新API,因此如果您的应用程序需要支持旧版本的Android,则应根据需要进行兼容性检查并使用适当的API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值