Rk3568 Andorid 11 新增输入正确密码才能安装应用的功能
问题描述
在进行RK3566 Android 的定制中 遇到一个问题,客户需要管理用户安装app,输入正确密码才能安装应用的功能
最终修改的文件是在
frameworks\base\packages\PackageInstaller\src\com\android\packageinstaller
##
修改方案如下
-
diff --git a/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java index e3d6c909a6..7ee9d0ccd6 100755 --- a/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -48,8 +48,16 @@ import android.view.View; import android.widget.Button; import com.android.internal.app.AlertActivity; +import android.widget.EditText; + +import android.app.AlertDialog; + +import android.view.Display; + +import android.view.WindowManager; import java.io.File; +import android.widget.TabHost; /** * This activity is launched when a new application is installed via side loading @@ -118,8 +126,34 @@ public class PackageInstallerActivity extends AlertActivity { private boolean mEnableOk = false; private void startInstallConfirm() { + //add by ltj add installApppassword + +try { + + String packageName = mPkgInfo.packageName; + + final EditText et = new EditText(PackageInstallerActivity.this); + + AlertDialog.Builder builder = new AlertDialog.Builder(PackageInstallerActivity.this); + + builder.setTitle(" 请输入安装应用密码 ") + + .setIcon(android.R.drawable.sym_def_app_icon) + + .setView(et) + + .setPositiveButton("确定", new DialogInterface.OnClickListener() { + + @Override + + public void onClick(DialogInterface dialogInterface, int i) { + + if (et.getText().toString().equals("12345678")) { + + //按下确定键后的事件 + + android.widget.Toast.makeText(PackageInstallerActivity.this, "密码正确", android.widget.Toast.LENGTH_LONG).show(); + View viewToEnable; if (mAppInfo != null) { viewToEnable = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 ? requireViewById(R.id.install_confirm_question_update_system) @@ -134,6 +168,75 @@ public class PackageInstallerActivity extends AlertActivity { mEnableOk = true; mOk.setEnabled(true); mOk.setFilterTouchesWhenObscured(true); + + } else { + + android.widget.Toast.makeText(PackageInstallerActivity.this,"密码错误", android.widget.Toast.LENGTH_LONG).show(); + + finish(); + + return; + + } + + } + + }).setNegativeButton("取消", new DialogInterface.OnClickListener() { + + @Override + + public void onClick(DialogInterface dialogInterface, int i) { + + finish(); + return; + + } + + }); + + final AlertDialog dialog = builder.create(); + + //获取屏幕的长宽 + + WindowManager window=getWindowManager(); + + Display display=window.getDefaultDisplay(); + + int screenheight=display.getHeight(); + + int screenWidth=display.getWidth(); + + dialog.setCancelable(false); + + dialog.show(); + + //设置弹出框的长宽 + + dialog.getWindow().setLayout(screenWidth-100,screenheight/10); + + }catch(NullPointerException e){ + + e.printStackTrace(); + + } + + //ltj add end add installApppassword - viewToEnable.setVisibility(View.VISIBLE); - - mEnableOk = true; - mOk.setEnabled(true); - mOk.setFilterTouchesWhenObscured(true); - View viewToEnable; - if (mAppInfo != null) { - viewToEnable = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 - ? requireViewById(R.id.install_confirm_question_update_system) - : requireViewById(R.id.install_confirm_question_update); - } else { - // This is a new application with no permissions. - viewToEnable = requireViewById(R.id.install_confirm_question); - } + // viewToEnable.setVisibility(View.VISIBLE); + + // mEnableOk = true; + // mOk.setEnabled(true); + // mOk.setFilterTouchesWhenObscured(true); + // View viewToEnable; + // if (mAppInfo != null) { + // viewToEnable = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 + // ? requireViewById(R.id.install_confirm_question_update_system) + // : requireViewById(R.id.install_confirm_question_update); + // } else { + // // This is a new application with no permissions. + // viewToEnable = requireViewById(R.id.install_confirm_question); + // } + + // viewToEnable.setVisibility(View.VISIBLE); + + // mEnableOk = true; + // mOk.setEnabled(true); + // mOk.setFilterTouchesWhenObscured(true); }
最终效果
参考链接
https://blog.csdn.net/weixin_39861823/article/details/117487642