如何防止/停止/禁用 android SDK EditText 暴露给应用程序类

Kis*_*rya 5 security android android-edittext android-security android-textinputedittext

我有一个包含 MYSDKActivity 的 SDK。在此活动布局中,我有 1 个编辑文本,用户可以在其中输入他的卡号。任何集成此 SDK 的 Android 客户端都可以在其应用程序类中使用ActivityLifecycleCallbacks并在此编辑文本上注册文本观察器,并且可以侦听用户卡号输入。

我想通过 Application 类阻止 SDK 编辑文本的使用。只有我的 SDK 可以访问此编辑文本并执行某些操作。我想阻止在我的 SDK 之外使用。

public class MyDemoApp extends Application implements Application.ActivityLifecycleCallbacks {

@Override
public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(this);
}

@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {}

@Override
public void onActivityStarted(@NonNull Activity activity) {}

@Override
public void onActivityResumed(@NonNull Activity activity) {
    if (activity instanceof MYSDKActivity) {
        final TextInputLayout textInputLayout = activity.findViewById(R.id.my_sdk_edit_text);
        if (textInputLayout != null) {
            ViewGroup textInputLayoutViewGroup = ((ViewGroup) textInputLayout.getChildAt(0));
            for (int i = 0; i < textInputLayoutViewGroup.getChildCount(); i++) {
                View child = textInputLayoutViewGroup.getChildAt(i);
                if (child instanceof TextInputEditText) {
                    Log.v("USER Input",  ((TextInputEditText) child).getText().toString());
                    ((TextInputEditText) child).addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                        }

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                            Log.v("USER Input", s.toString());
                        }

                        @Override
                        public void afterTextChanged(Editable s) {}
                    });
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

小智 -1

实现这一目标的最佳方法

  1. 创建一个不公开 gettext 和 addTextWatcher 等方法的自定义布局。

  2. 如果您将此数据存储在商店中,切勿将此数据存储为纯字符串。(使用加密)。