Merge "Move SdkSetup app into device/generic/goldfish" am: 16a8d0fa8e am: d42dd28394 am: 895aa04c46
Original change: https://android-review.googlesource.com/c/platform/development/+/2221506 Change-Id: I1261af5c66d13d560535ae05fafbe51833ef1cbd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1,25 +0,0 @@
|
||||
package {
|
||||
// See: http://go/android-license-faq
|
||||
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||
}
|
||||
|
||||
android_app {
|
||||
name: "SdkSetup",
|
||||
privileged: true,
|
||||
srcs: ["**/*.java"],
|
||||
platform_apis: true,
|
||||
certificate: "platform",
|
||||
optimize: {
|
||||
enabled: false,
|
||||
},
|
||||
system_ext_specific: true,
|
||||
required: ["privapp_whitelist_com.android.sdksetup"],
|
||||
}
|
||||
|
||||
prebuilt_etc {
|
||||
name: "privapp_whitelist_com.android.sdksetup",
|
||||
system_ext_specific: true,
|
||||
sub_dir: "permissions",
|
||||
src: "com.android.sdksetup.xml",
|
||||
filename_from_src: true,
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.sdksetup">
|
||||
|
||||
<!-- For miscellaneous settings -->
|
||||
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.MANAGE_USERS" />
|
||||
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_SYSTEM_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.SET_KEYBOARD_LAYOUT" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<application>
|
||||
<activity android:name="DefaultActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="true">
|
||||
<intent-filter android:priority="3">
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.HOME" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.BACKUP" />
|
||||
</manifest>
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
# Copyright (C) 2019 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# If you don't need to do a full clean build but would like to touch
|
||||
# a file or delete some intermediate files, add a clean step to the end
|
||||
# of the list. These steps will only be run once, if they haven't been
|
||||
# run before.
|
||||
#
|
||||
# E.g.:
|
||||
# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
|
||||
# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
|
||||
#
|
||||
# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
|
||||
# files that are missing or have been moved.
|
||||
#
|
||||
# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
|
||||
# Use $(OUT_DIR) to refer to the "out" directory.
|
||||
#
|
||||
# If you need to re-do something that's already mentioned, just copy
|
||||
# the command and add it to the bottom of the list. E.g., if a change
|
||||
# that you made last week required touching a file and a change you
|
||||
# made today requires touching the same file, just copy the old
|
||||
# touch step and add it to the end of the list.
|
||||
#
|
||||
# ************************************************
|
||||
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
|
||||
# ************************************************
|
||||
|
||||
# For example:
|
||||
#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
|
||||
#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
|
||||
#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
|
||||
#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
|
||||
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product/priv-app/SdkSetup)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product/priv-app/SdkSetup)
|
||||
|
||||
# ************************************************
|
||||
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
|
||||
# ************************************************
|
||||
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2017 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<!--
|
||||
This XML file declares which signature|privileged permissions should be granted to privileged
|
||||
applications on GMS or Google-branded devices.
|
||||
It allows additional grants on top of privapp-permissions-platform.xml
|
||||
-->
|
||||
|
||||
<permissions>
|
||||
<privapp-permissions package="com.android.sdksetup">
|
||||
<permission name="android.permission.BACKUP"/>
|
||||
<permission name="android.permission.MANAGE_USERS"/>
|
||||
<permission name="android.permission.MODIFY_PHONE_STATE"/>
|
||||
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
|
||||
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
|
||||
</privapp-permissions>
|
||||
</permissions>
|
||||
@@ -1,143 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.sdksetup;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.hardware.input.InputManager;
|
||||
import android.hardware.input.KeyboardLayout;
|
||||
import android.location.LocationManager;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.net.wifi.WifiConfiguration;
|
||||
import android.provider.Settings;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.Build;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
import android.view.InputDevice;
|
||||
|
||||
/**
|
||||
* Entry point for SDK SetupWizard.
|
||||
*
|
||||
*/
|
||||
public class DefaultActivity extends Activity {
|
||||
private static final String TAG = "SdkSetup";
|
||||
private static final int ADD_NETWORK_FAIL = -1;
|
||||
@Override
|
||||
protected void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
|
||||
// Edit Settings only for Emulator
|
||||
if (Build.IS_EMULATOR) {
|
||||
// Add network with SSID "AndroidWifi"
|
||||
WifiConfiguration config = new WifiConfiguration();
|
||||
config.SSID = "\"AndroidWifi\"";
|
||||
config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
|
||||
WifiManager mWifiManager = getApplicationContext().getSystemService(WifiManager.class);
|
||||
int netId = mWifiManager.addNetwork(config);
|
||||
if (netId == ADD_NETWORK_FAIL || mWifiManager.enableNetwork(netId, true)) {
|
||||
Log.e(TAG, "Unable to add Wi-Fi network AndroidWifi.");
|
||||
}
|
||||
|
||||
// Set physical keyboard layout based on the system property set by emulator host.
|
||||
String layoutName = SystemProperties.get("vendor.qemu.keyboard_layout");
|
||||
String displaySettingsName = SystemProperties.get("ro.boot.qemu.display.settings.xml");
|
||||
String deviceName = "qwerty2";
|
||||
InputDevice device = getKeyboardDevice(deviceName);
|
||||
if (device != null && !layoutName.isEmpty()) {
|
||||
setKeyboardLayout(device, layoutName);
|
||||
}
|
||||
// Add a persistent setting to allow other apps to know the device has been provisioned.
|
||||
Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
|
||||
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
|
||||
|
||||
// Disables a dialog shown on adb install execution.
|
||||
Settings.Global.putInt(getContentResolver(), Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB, 0);
|
||||
|
||||
// Enable the GPS.
|
||||
// Not needed since this SDK will contain the Settings app.
|
||||
Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
|
||||
LocationManager.GPS_PROVIDER);
|
||||
|
||||
// enable install from non market
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 1);
|
||||
|
||||
Settings.Global.putInt(getContentResolver(), Settings.Global.ADB_ENABLED, 1);
|
||||
|
||||
// Disable offload wifi tethering
|
||||
Settings.Global.putInt(getContentResolver(), Settings.Global.TETHER_OFFLOAD_DISABLED, 1);
|
||||
|
||||
// b/193418404
|
||||
// the following blocks, TODO: find out why and fix it. disable this for now.
|
||||
// TelephonyManager mTelephony = getApplicationContext().getSystemService(TelephonyManager.class);
|
||||
// mTelephony.setPreferredNetworkTypeBitmask(TelephonyManager.NETWORK_TYPE_BITMASK_NR);
|
||||
if ("freeform".equals(displaySettingsName)) {
|
||||
Settings.Global.putInt(getContentResolver(), "sf", 1);
|
||||
Settings.Global.putString(getContentResolver(), Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, "1");
|
||||
Settings.Global.putString(getContentResolver(), Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, "1");
|
||||
Settings.Global.putString(getContentResolver(), Settings.Global.DEVELOPMENT_WM_DISPLAY_SETTINGS_PATH, "vendor/etc/display_settings_freeform.xml");
|
||||
} else if ("resizable".equals(displaySettingsName)) {
|
||||
// Enable auto rotate for resizable AVD
|
||||
Settings.System.putString(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, "1");
|
||||
}
|
||||
}
|
||||
|
||||
// remove this activity from the package manager.
|
||||
PackageManager pm = getPackageManager();
|
||||
ComponentName name = new ComponentName(this, DefaultActivity.class);
|
||||
pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
|
||||
|
||||
// terminate the activity.
|
||||
finish();
|
||||
}
|
||||
|
||||
private InputDevice getKeyboardDevice(String keyboardDeviceName) {
|
||||
int[] deviceIds = InputDevice.getDeviceIds();
|
||||
|
||||
for (int deviceId : deviceIds) {
|
||||
InputDevice inputDevice = InputDevice.getDevice(deviceId);
|
||||
if (inputDevice != null
|
||||
&& inputDevice.supportsSource(InputDevice.SOURCE_KEYBOARD)
|
||||
&& inputDevice.getName().equals(keyboardDeviceName)) {
|
||||
return inputDevice;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void setKeyboardLayout(InputDevice keyboardDevice, String layoutName) {
|
||||
InputManager im = InputManager.getInstance();
|
||||
|
||||
KeyboardLayout[] keyboardLayouts =
|
||||
im.getKeyboardLayoutsForInputDevice(keyboardDevice.getIdentifier());
|
||||
|
||||
for (KeyboardLayout keyboardLayout : keyboardLayouts) {
|
||||
if (keyboardLayout.getDescriptor().endsWith(layoutName)) {
|
||||
im.setCurrentKeyboardLayoutForInputDevice(
|
||||
keyboardDevice.getIdentifier(), keyboardLayout.getDescriptor());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user