public Intent createScreenCaptureIntent() {
Intent i = new Intent();
i.setClassName("com.android.systemui",
"com.android.systemui.media.MediaProjectionPermissionActivity");
return i;
}
方法MediaProjectionPermissionActivity接收到该请求后,首先获取发起请求的应用程序包信息:
public void onCreate(Bundle icicle) {
…
PackageManager packageManager = getPackageManager();
ApplicationInfo aInfo;
try {
aInfo = packageManager.getApplicationInfo(mPackageName, 0);
mUid = aInfo.uid;
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "unable to look up package name", e);
finish();
return;
…}
接着,MediaProjectionPermissionActivity弹出AlertDialog提示框请求用户授权录制,AlertDialog中的提示信息由请求录制屏幕的软件名称和“将开始截取您的屏幕上的所有内容。”两段组成。
public void onCreate(Bundle icicle) {
…
String appName = aInfo.loadLabel(packageManager).toString();
…
final AlertController.AlertParams ap = mAlertParams;
ap.mIcon = aInfo.loadIcon(packageManager);
ap.mMessage = getString(R.string.media_projection_dialog_text, appName);
…
此处系统没有对应用名的长度做检查,提示框的大小会随提示内容(应用名)的长短自动调整,当应用名称足够长时,“将开始截取您的屏幕上的所有内容。”这段提示语将不再显示在AlertDialog中的可视范围内,从而导致手机用户只是看到了一串长长的应用名,而没有看到系统真正想要提示用户的“有软件将要录屏”这样的重要提示信息。