Restructure Module code [ com.android.tethering ]
Code Migration from frameworks/base/packages/Tethering -> packages/modules/Connectivity/Tethering BUG: 167962976 Test: m com.android.tethering + TH Merged-In: Ib4a3a7a14d7d0e544aadf1bfb21ad390f1ba76a7 Change-Id: Ifae56d991b43c02f1e3496abbafc87d1869add8a
@@ -1,137 +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.
|
||||
//
|
||||
|
||||
java_defaults {
|
||||
name: "TetheringAndroidLibraryDefaults",
|
||||
sdk_version: "module_current",
|
||||
srcs: [
|
||||
"src/**/*.java",
|
||||
":framework-tethering-shared-srcs",
|
||||
":tethering-module-utils-srcs",
|
||||
":services-tethering-shared-srcs",
|
||||
],
|
||||
static_libs: [
|
||||
"androidx.annotation_annotation",
|
||||
"netd_aidl_interface-unstable-java",
|
||||
"netlink-client",
|
||||
// TODO: use networkstack-client instead of just including the AIDL interface
|
||||
"networkstack-aidl-interfaces-unstable-java",
|
||||
"android.hardware.tetheroffload.config-V1.0-java",
|
||||
"android.hardware.tetheroffload.control-V1.0-java",
|
||||
"net-utils-framework-common",
|
||||
"net-utils-device-common",
|
||||
],
|
||||
libs: [
|
||||
"framework-statsd.stubs.module_lib",
|
||||
"framework-tethering.impl",
|
||||
"framework-wifi",
|
||||
"unsupportedappusage",
|
||||
],
|
||||
plugins: ["java_api_finder"],
|
||||
manifest: "AndroidManifestBase.xml",
|
||||
}
|
||||
|
||||
// Build tethering static library, used to compile both variants of the tethering.
|
||||
android_library {
|
||||
name: "TetheringApiCurrentLib",
|
||||
defaults: ["TetheringAndroidLibraryDefaults"],
|
||||
}
|
||||
|
||||
// Due to b/143733063, APK can't access a jni lib that is in APEX (but not in the APK).
|
||||
cc_library {
|
||||
name: "libtetherutilsjni",
|
||||
sdk_version: "current",
|
||||
apex_available: [
|
||||
"//apex_available:platform", // Used by InProcessTethering
|
||||
"com.android.tethering",
|
||||
],
|
||||
min_sdk_version: "current",
|
||||
srcs: [
|
||||
"jni/android_net_util_TetheringUtils.cpp",
|
||||
],
|
||||
shared_libs: [
|
||||
"liblog",
|
||||
"libnativehelper_compat_libc++",
|
||||
],
|
||||
|
||||
// We cannot use plain "libc++" here to link libc++ dynamically because it results in:
|
||||
// java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
|
||||
// even if "libc++" is added into jni_libs below. Adding "libc++_shared" into jni_libs doesn't
|
||||
// build because soong complains of:
|
||||
// module Tethering missing dependencies: libc++_shared
|
||||
//
|
||||
// So, link libc++ statically. This means that we also need to ensure that all the C++ libraries
|
||||
// we depend on do not dynamically link libc++. This is currently the case, because liblog is
|
||||
// C-only and libnativehelper_compat_libc also uses stl: "c++_static".
|
||||
stl: "c++_static",
|
||||
|
||||
cflags: [
|
||||
"-Wall",
|
||||
"-Werror",
|
||||
"-Wno-unused-parameter",
|
||||
"-Wthread-safety",
|
||||
],
|
||||
|
||||
ldflags: ["-Wl,--exclude-libs=ALL,-error-limit=0"],
|
||||
}
|
||||
|
||||
// Common defaults for compiling the actual APK.
|
||||
java_defaults {
|
||||
name: "TetheringAppDefaults",
|
||||
sdk_version: "module_current",
|
||||
privileged: true,
|
||||
jni_libs: [
|
||||
"libtetherutilsjni",
|
||||
],
|
||||
resource_dirs: [
|
||||
"res",
|
||||
],
|
||||
libs: [
|
||||
"framework-tethering",
|
||||
"framework-wifi",
|
||||
],
|
||||
jarjar_rules: "jarjar-rules.txt",
|
||||
optimize: {
|
||||
proguard_flags_files: ["proguard.flags"],
|
||||
},
|
||||
}
|
||||
|
||||
// Non-updatable tethering running in the system server process for devices not using the module
|
||||
android_app {
|
||||
name: "InProcessTethering",
|
||||
defaults: ["TetheringAppDefaults"],
|
||||
static_libs: ["TetheringApiCurrentLib"],
|
||||
certificate: "platform",
|
||||
manifest: "AndroidManifest_InProcess.xml",
|
||||
// InProcessTethering is a replacement for Tethering
|
||||
overrides: ["Tethering"],
|
||||
apex_available: ["com.android.tethering"],
|
||||
min_sdk_version: "current",
|
||||
}
|
||||
|
||||
// Updatable tethering packaged as an application
|
||||
android_app {
|
||||
name: "Tethering",
|
||||
defaults: ["TetheringAppDefaults"],
|
||||
static_libs: ["TetheringApiCurrentLib"],
|
||||
certificate: "networkstack",
|
||||
manifest: "AndroidManifest.xml",
|
||||
use_embedded_native_libs: true,
|
||||
// The permission configuration *must* be included to ensure security of the device
|
||||
required: ["NetworkPermissionConfig"],
|
||||
apex_available: ["com.android.tethering"],
|
||||
min_sdk_version: "current",
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.networkstack.tethering"
|
||||
android:sharedUserId="android.uid.networkstack">
|
||||
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
|
||||
|
||||
<!-- Permissions must be defined here, and not in the base manifest, as the tethering
|
||||
running in the system server process does not need any permission, and having
|
||||
privileged permissions added would cause crashes on startup unless they are also
|
||||
added to the privileged permissions allowlist for that package. -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
|
||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.MANAGE_USB" />
|
||||
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
|
||||
<uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<uses-permission android:name="android.permission.TETHER_PRIVILEGED" />
|
||||
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
|
||||
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
|
||||
<protected-broadcast android:name="com.android.server.connectivity.tethering.DISABLE_TETHERING" />
|
||||
|
||||
<application
|
||||
android:process="com.android.networkstack.process"
|
||||
android:extractNativeLibs="false"
|
||||
android:persistent="true">
|
||||
<service android:name="com.android.networkstack.tethering.TetheringService"
|
||||
android:permission="android.permission.MAINLINE_NETWORK_STACK"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.net.ITetheringConnector"/>
|
||||
</intent-filter>
|
||||
</service>
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.networkstack.tethering"
|
||||
android:versionCode="1"
|
||||
android:versionName="R-initial">
|
||||
<application
|
||||
android:label="Tethering"
|
||||
android:defaultToDeviceProtectedStorage="true"
|
||||
android:directBootAware="true"
|
||||
android:usesCleartextTraffic="true">
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.networkstack.tethering.inprocess"
|
||||
android:sharedUserId="android.uid.system"
|
||||
android:process="system">
|
||||
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
|
||||
<application>
|
||||
<service android:name="com.android.networkstack.tethering.TetheringService"
|
||||
android:process="system"
|
||||
android:permission="android.permission.MAINLINE_NETWORK_STACK"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.net.ITetheringConnector.InProcess"/>
|
||||
</intent-filter>
|
||||
</service>
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -1,2 +0,0 @@
|
||||
set noparent # while performing migration - b/167962976
|
||||
baligh@google.com
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"presubmit": [
|
||||
{
|
||||
"name": "TetheringTests"
|
||||
}
|
||||
],
|
||||
"postsubmit": [
|
||||
{
|
||||
"name": "TetheringIntegrationTests"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,48 +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.
|
||||
//
|
||||
|
||||
apex {
|
||||
name: "com.android.tethering",
|
||||
updatable: true,
|
||||
min_sdk_version: "current",
|
||||
java_libs: ["framework-tethering"],
|
||||
bpfs: ["offload.o"],
|
||||
apps: ["Tethering"],
|
||||
manifest: "manifest.json",
|
||||
key: "com.android.tethering.key",
|
||||
|
||||
androidManifest: "AndroidManifest.xml",
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "com.android.tethering.key",
|
||||
public_key: "com.android.tethering.avbpubkey",
|
||||
private_key: "com.android.tethering.pem",
|
||||
}
|
||||
|
||||
android_app_certificate {
|
||||
name: "com.android.tethering.certificate",
|
||||
certificate: "com.android.tethering",
|
||||
}
|
||||
|
||||
override_apex {
|
||||
name: "com.android.tethering.inprocess",
|
||||
base: "com.android.tethering",
|
||||
package_name: "com.android.tethering.inprocess",
|
||||
apps: [
|
||||
"InProcessTethering",
|
||||
],
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.tethering">
|
||||
<!-- APEX does not have classes.dex -->
|
||||
<application android:hasCode="false" />
|
||||
<!-- b/145383354: Current minSdk is locked to Q for development cycle, lock it to next version
|
||||
before ship. -->
|
||||
<!-- TODO: Uncomment this when the R API level is fixed. b/148281152 -->
|
||||
<!--uses-sdk
|
||||
android:minSdkVersion="29"
|
||||
android:targetSdkVersion="29"
|
||||
/>
|
||||
-->
|
||||
</manifest>
|
||||
@@ -1,51 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIJKgIBAAKCAgEA+AWTp03PBRMGt4mVNLt5PDoFFSfmFOVTM7jt5AJXnQMIDsAM
|
||||
1cyWGWRridGIpoHAaCALVgW5aRySgi8yV5xP4w0YHcKbfh9M6I9oz4RUo4GQBZfX
|
||||
+lFIGaLjb6I3tEJxPuxps4sW26Io63ihwTnKeGyADHdHGWDUs9WU0Ml+QTvKrdjy
|
||||
qC03M0dehYXILGiA9m+UXwKoKxhWgfDUhWLhDBUtLJLPL4WeqKc9sG9h+zzVqE+8
|
||||
LzJsfrodKhTTrLpWOXi6YLRTk8dzsuPz/Nu98sJd1w3fHd20DrmkqsxVhgN1h+nk
|
||||
zcPpxyGYIP6qYVZCmIXCwZZNtPeb7y/tOs967VHoZ4Qj7p2tE0CAWFMZFGjA/pcZ
|
||||
7fi6CsIuMOYBbj4+wRlJwpG1g5zSJBCjzhv7dZp8S5oXmLShNYOMYEdsPfaZbm08
|
||||
3pVY+k8DVf7idcANXNw1lM+sPbE2hp5VuEuVpK+ca5x8hIMpTqJ84wDAjnC1kCwm
|
||||
X2xfNvYPKNF58SvqlNCPN8X7hQjoeaEb7w24vCdZMRqeGBmu1GNQvCyzbBO0huQm
|
||||
f5CQPrZjPcnoImlP879VPxY4YB6tAjsA/ZLiub9VdT108lCjb5r8criMzpMAA/AQ
|
||||
NqQLWFI3M43xPemGBTiIguTYgpRgGcdRZf7XuTgTY5qzQZZuZMVuwaqSD2cCAwEA
|
||||
AQKCAgEA0jMvw3BPTrakT7Lb8JgelKt7mUV6WyVMUZ6eh0pw5JIoJxAfEKfWYmjY
|
||||
NzKNRMjcv6LA2MP7MplTld/YI6ZHkl+Lm9VOISL39HVuV8mIThbFb+gT1INEvu1t
|
||||
IjRyT2SsQ67rmo377mLNmVtgg7mt3kfecjI44MpPGqad/CF4zmKVUKd4aI4BpYUM
|
||||
F8+dKf3bpoBEWA2RZwy2bGQmSXHW132vDoLR8y2knL04rCqJ+PrC/WWuULXEe9bS
|
||||
VtLV3yMBZq3qD4Fk/+7fILLPGvNFVdPi4htQiChYrM4rP9HzfaO63VieYMF0hR70
|
||||
pqoOznXj9Q4QVC9FZmUgFCQjQ1+KhqJw3OldIo0SnvpsLdTO/inKkhQWKC5HlPyh
|
||||
/rqvro2j3pTHWPAziuBr+oQPcdVCOlCBZ+B99L1tO7aGktVPEIVQG7G7jlFMBiJ1
|
||||
j/kRGk2RTX8RaPQJTnwUqp8mWUV2fwxHiXNadjejA5ZU3eQT2eAOhXl1w6Lv2jEl
|
||||
0wMOwPMJGcF77CcqnnWHON8fkxCbAfyy5Uo6Pm9g/Zzecn+ji2sabG7Ge5t0gzdL
|
||||
LKRcGoyakN2CrbQ8pxlCTgE4HX5oPY+VuqOf8L3AIWIJBsyLbXHVkL1mqQ/Ed2uz
|
||||
zaaSFYUZw81+m/5bl8JLPaIFNPyikZrXTD0YRer3V06XiyP/kYECggEBAP033xeF
|
||||
OhgRwkRTjd68hwRJpyHsZDWxHiUqQf6l6yFv5mEE355G2IGI7cZmR2+tUDjQdxLv
|
||||
tAZIszTK4PFCdVTeWfGVFbVF84eNWLB124pHDMM79GN/AMcuHnQPR756a8IO1hIy
|
||||
4KxIUE1a1PKN5b9IgE5Lu4TZM96HDpFcUAmCT5urdYDmg3++IWT9PYQlGS7Hhiar
|
||||
r+Hh646waM8Qx619CwXBqy+Y37+WHVbYqJClr6AcpVMrGA+6cgpskFpZAPLsoy7G
|
||||
RSsVfyV8pH2JKm/hzk7XCwIpczxeWQSfpJWZ+oOPFHu+zM60Cdj2UrQyKrNHwew8
|
||||
+WYe9eCA+MiNBcECggEBAPq/F1vdqROiLv9uzhKb8ybgdL7CmREELiqwK+MvNE9t
|
||||
W7lQz7lcWzav+b2n0M+VJBxUWB3XClgoIvA/AllgTgsYXfKAxNakhKLSBoMmvKCW
|
||||
HtWcGr/D3RcmacK+DTMWlVS/LuueAFLuH6UmBIUFKc+qA5x7oQecAFALBFupE3G4
|
||||
LtAspLBI6P8gRtRav5p2whs9H8qjYcyf2f6liWpkmFITcXvPvAxFHicR6ZJdwZ/S
|
||||
PiX2LJQnOpT7L3+2PWnYwzFStb4MkMGlFKcscU9CvS53JcP/J4Asjk0I4zDB2gri
|
||||
xzFHPlVzCr2IVVGptKCQ3sdYiMIzQKzEXQHCU8h37ycCggEBAJu8aC48Fz3Edlm1
|
||||
ldS+2L9vWSaJEBzhoSu0cMBgZVu8SdGzwKDE69XHVI4oS5lI28UFmaaA3JTc07MN
|
||||
cAmSGT2oP2NQkPhbXGsrKLfm1K6YAiZ1Ulp7OwxFth8lYreo7Wt92nV46yuqkhDx
|
||||
Y3UGhp39xkPhWiRbvgYHxJLsVqFyjumsK2mq3IeNdVZ6VgJXGsTlnAFeqJ7hZxHs
|
||||
N5natSRjeosA0PtGJ57agZLvT8Ue0gREef3LzFGoFwmIOcQHZ4kAt2BGOzZDU17H
|
||||
6Rb4bKxBEbT1l2St/5zKXi90zDHicOvG7Q8qiyY6HrBc1wLSs+ZtpLxZx/3h3tFE
|
||||
IT6fVUECggEBAMSAQm8Ey76OJ+SXUjk1K50442SnHcs/Cmr7urkEQitImUwl71Pk
|
||||
87pst/uP6szypOTqmE9yOTIS6iZ6Sn3+QcriIqWrkhZfwW3Tx7S6A7KZUrq15iSH
|
||||
+thsiw9JXxC9TvOmC8AsBzb2U6hZncsc28JZCxFztSNAduJDb/vhCVLiMxWDFuDr
|
||||
kmR1R+yc3XDQRpeQFDz6QudYEj9EPOc6xD/16sZLaqP2+oVFvVSt0tJLsdaQECle
|
||||
gMNGAdhE2eX8MCOUHMc+E6cdlozYAEhMFfO2/cqWR79jq3TlVR3dnOFRDScqHMhc
|
||||
KnuTvsELjHkUbvGsCSiff7yk+fop7vy4OJsCggEAPemJdItO2rhib8EofrZdY72I
|
||||
oifX1jhPZ1BWD2GKgcx+eVyJGbONBbJVexvvskTfZBvCcAegmgp+sngP6MO6yZkr
|
||||
cHMfAJeApYZnshsgXksHGMDtSB50/w1JLrc/nqpxdpy/aTazt0Eu1pLWpze1HFZ/
|
||||
Xyu4PcmrU+4P1vN7c396slHMktEvly6QqOn4nfBbGDJ17Ow6X1XFvGjAxQPIDTB+
|
||||
6loV14AHymwmqwMrGn84O72rzqyw+41GxW5+oXhOZ4MeXF3u89TBLWvXDpPy/YQU
|
||||
EiKpodN0YeEn6Ghzplan8rUha+7TP7AYnS5pCszsCHKd03Py0lMLkF+uAfVsDA==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,35 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGKTCCBBGgAwIBAgIUNiSs5EMqxCZ31gWWCcRJVp9HffAwDQYJKoZIhvcNAQEL
|
||||
BQAwgaIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
|
||||
b2lkMR4wHAYDVQQDDBVjb20uYW5kcm9pZC50ZXRoZXJpbmcxIjAgBgkqhkiG9w0B
|
||||
CQEWE2FuZHJvaWRAYW5kcm9pZC5jb20wIBcNMTkxMjE4MDcwMDQ4WhgPNDc1NzEx
|
||||
MTMwNzAwNDhaMIGiMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEW
|
||||
MBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UE
|
||||
CwwHQW5kcm9pZDEeMBwGA1UEAwwVY29tLmFuZHJvaWQudGV0aGVyaW5nMSIwIAYJ
|
||||
KoZIhvcNAQkBFhNhbmRyb2lkQGFuZHJvaWQuY29tMIICIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAg8AMIICCgKCAgEAxvTUA4seblYjZLfTVNwZuJH914QVNFTj+vD94pWmt5Aq
|
||||
sH1DVTpBvpXXegc/P5HI2XF/71poSBib1WaQSuXG0fU5K75T18bOGL0qF+fhMtBO
|
||||
wUyvulcjO0h4XE/xf0txY54exUjAA4JS9ERGJOgb4GOwSbPyzekfmzIyCZ2Yawwu
|
||||
+oGwD2ZNzZRaPOoWxjwohBWQ6mySuvF9RRRb300qmxxUGFM9Ki3aqrWlYlHEOwOC
|
||||
M+gIXxYFO7S+yUzf6/gMZLOz2YqfcTOup4hAxtExR7niutxJSsRLPBL237exAJoz
|
||||
OupoXjtWAlPK4ZwZ/Nl1jdTWauJ+Kv3WqzhHGEb2gn3ZpeO3IdOjJhDgFJ6m1OT/
|
||||
kjRbW1LCuKGrKaoqsEDT2X3a7Izfripn65hSNTfR5gNLtgELaI3/vXi8Fmzw1AfH
|
||||
+qi6ulElZvSwx0qm+S0QiPyGFlxrsdnHoGJl1tzjJW8KdNZRvzRLUQtbphPp+VkL
|
||||
5i0bNKum+AwbfdUkLkNLfw9XdbujgBkZTZDQbZGsNjgrvyXcPO2KiJee0hVCZRs0
|
||||
rhDi5Pfm7BnN/I2vaTRz/W4mdct9H2RWMuqlSH90JvmKtWcND8ahmOJ3sggrvzfO
|
||||
QNs3k4JTRecamMzqIkylhlnEC4FjWc6Bx4wsEpwBMZOkF/tGGMZYf2C09a8tpP0C
|
||||
AwEAAaNTMFEwHQYDVR0OBBYEFNP5gIpNWmq0xa411M1GaRPbEijvMB8GA1UdIwQY
|
||||
MBaAFNP5gIpNWmq0xa411M1GaRPbEijvMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
||||
hvcNAQELBQADggIBADJGmU3QP4EGbt6eBhVPeo/efsqrHsuB2fvFzvIobJbfkSob
|
||||
cmvjbzIikOlPAgFWj8lT5SDcIWRorFf1u2JylClJ0nSDcqJMHVKmT7wseV/KtX//
|
||||
1yUyJFRQVzmjC89dp8OIc00GmItivKLer3NbJdkR3rTUjg7+bNUO27Qp3AFREmiJ
|
||||
P+M7ouvcQRvByUWbp/LOrJpMdJLysRBO562RwrtwTjltdvufyYswbBZOKEiUh1Jc
|
||||
Ged+3+SJdhwq3Wy+R3Uj7YE7mUMu1QNbANIMrwF8W93EA53eoL2+cKmuaVU6ZURL
|
||||
xgSJaY6TrunnSI9XTROLtjsFlJorYWy2tvG7Q5Hw3OkO2Xdz/mm85VTkiusg9DMB
|
||||
WWTv607YtsIO0FhKmcV4bp3q/EkRj3t/zLvL9uFJrWDGkuShZq6fQvqbCvaokOPY
|
||||
+M0ZRIwgwa9UpEE0BMklVWqR6BGyap614gOgcOjYM70WRNl59Qne+g128ZN7g9nz
|
||||
61F70i7kUngV0ZUz1/Fu/NCG+6wGF85ZbFmQl60YHPDw1FtjVUuKyBblaDzdJunx
|
||||
yQr2t9RUokzFBFK0lGW3+yf0WDQ5fqTMs5h8bz1FCq8/HzWmpdOfqePLe4zsld3b
|
||||
1nFuSohaIfbn/HDdTNtTBGQPgz8ZswQ6ejJJqTLz9D/odbqn9LeIhDZXcQTf
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"name": "com.android.tethering",
|
||||
"version": 300900700
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
//
|
||||
// Copyright (C) 2020 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.
|
||||
//
|
||||
|
||||
//
|
||||
// bpf kernel programs
|
||||
//
|
||||
bpf {
|
||||
name: "offload.o",
|
||||
srcs: ["offload.c"],
|
||||
cflags: [
|
||||
"-Wall",
|
||||
"-Werror",
|
||||
],
|
||||
include_dirs: [
|
||||
// TODO: get rid of system/netd.
|
||||
"system/netd/bpf_progs", // for bpf_net_helpers.h
|
||||
"system/netd/libnetdbpf/include", // for bpf_shared.h
|
||||
"system/netd/libnetdutils/include", // for UidConstants.h
|
||||
],
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.
|
||||
*/
|
||||
|
||||
#include <linux/if.h>
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/pkt_cls.h>
|
||||
#include <linux/tcp.h>
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
#include "bpf_net_helpers.h"
|
||||
#include "netdbpf/bpf_shared.h"
|
||||
|
||||
DEFINE_BPF_MAP_GRW(tether_ingress_map, HASH, TetherIngressKey, TetherIngressValue, 64,
|
||||
AID_NETWORK_STACK)
|
||||
|
||||
// Tethering stats, indexed by upstream interface.
|
||||
DEFINE_BPF_MAP_GRW(tether_stats_map, HASH, uint32_t, TetherStatsValue, 16, AID_NETWORK_STACK)
|
||||
|
||||
// Tethering data limit, indexed by upstream interface.
|
||||
// (tethering allowed when stats[iif].rxBytes + stats[iif].txBytes < limit[iif])
|
||||
DEFINE_BPF_MAP_GRW(tether_limit_map, HASH, uint32_t, uint64_t, 16, AID_NETWORK_STACK)
|
||||
|
||||
static inline __always_inline int do_forward(struct __sk_buff* skb, bool is_ethernet) {
|
||||
int l2_header_size = is_ethernet ? sizeof(struct ethhdr) : 0;
|
||||
void* data = (void*)(long)skb->data;
|
||||
const void* data_end = (void*)(long)skb->data_end;
|
||||
struct ethhdr* eth = is_ethernet ? data : NULL; // used iff is_ethernet
|
||||
struct ipv6hdr* ip6 = is_ethernet ? (void*)(eth + 1) : data;
|
||||
|
||||
// Must be meta-ethernet IPv6 frame
|
||||
if (skb->protocol != htons(ETH_P_IPV6)) return TC_ACT_OK;
|
||||
|
||||
// Must have (ethernet and) ipv6 header
|
||||
if (data + l2_header_size + sizeof(*ip6) > data_end) return TC_ACT_OK;
|
||||
|
||||
// Ethertype - if present - must be IPv6
|
||||
if (is_ethernet && (eth->h_proto != htons(ETH_P_IPV6))) return TC_ACT_OK;
|
||||
|
||||
// IP version must be 6
|
||||
if (ip6->version != 6) return TC_ACT_OK;
|
||||
|
||||
// Cannot decrement during forward if already zero or would be zero,
|
||||
// Let the kernel's stack handle these cases and generate appropriate ICMP errors.
|
||||
if (ip6->hop_limit <= 1) return TC_ACT_OK;
|
||||
|
||||
// Protect against forwarding packets sourced from ::1 or fe80::/64 or other weirdness.
|
||||
__be32 src32 = ip6->saddr.s6_addr32[0];
|
||||
if (src32 != htonl(0x0064ff9b) && // 64:ff9b:/32 incl. XLAT464 WKP
|
||||
(src32 & htonl(0xe0000000)) != htonl(0x20000000)) // 2000::/3 Global Unicast
|
||||
return TC_ACT_OK;
|
||||
|
||||
TetherIngressKey k = {
|
||||
.iif = skb->ifindex,
|
||||
.neigh6 = ip6->daddr,
|
||||
};
|
||||
|
||||
TetherIngressValue* v = bpf_tether_ingress_map_lookup_elem(&k);
|
||||
|
||||
// If we don't find any offload information then simply let the core stack handle it...
|
||||
if (!v) return TC_ACT_OK;
|
||||
|
||||
uint32_t stat_and_limit_k = skb->ifindex;
|
||||
|
||||
TetherStatsValue* stat_v = bpf_tether_stats_map_lookup_elem(&stat_and_limit_k);
|
||||
|
||||
// If we don't have anywhere to put stats, then abort...
|
||||
if (!stat_v) return TC_ACT_OK;
|
||||
|
||||
uint64_t* limit_v = bpf_tether_limit_map_lookup_elem(&stat_and_limit_k);
|
||||
|
||||
// If we don't have a limit, then abort...
|
||||
if (!limit_v) return TC_ACT_OK;
|
||||
|
||||
// Required IPv6 minimum mtu is 1280, below that not clear what we should do, abort...
|
||||
const int pmtu = v->pmtu;
|
||||
if (pmtu < IPV6_MIN_MTU) return TC_ACT_OK;
|
||||
|
||||
// Approximate handling of TCP/IPv6 overhead for incoming LRO/GRO packets: default
|
||||
// outbound path mtu of 1500 is not necessarily correct, but worst case we simply
|
||||
// undercount, which is still better then not accounting for this overhead at all.
|
||||
// Note: this really shouldn't be device/path mtu at all, but rather should be
|
||||
// derived from this particular connection's mss (ie. from gro segment size).
|
||||
// This would require a much newer kernel with newer ebpf accessors.
|
||||
// (This is also blindly assuming 12 bytes of tcp timestamp option in tcp header)
|
||||
uint64_t packets = 1;
|
||||
uint64_t bytes = skb->len;
|
||||
if (bytes > pmtu) {
|
||||
const int tcp_overhead = sizeof(struct ipv6hdr) + sizeof(struct tcphdr) + 12;
|
||||
const int mss = pmtu - tcp_overhead;
|
||||
const uint64_t payload = bytes - tcp_overhead;
|
||||
packets = (payload + mss - 1) / mss;
|
||||
bytes = tcp_overhead * packets + payload;
|
||||
}
|
||||
|
||||
// Are we past the limit? If so, then abort...
|
||||
// Note: will not overflow since u64 is 936 years even at 5Gbps.
|
||||
// Do not drop here. Offload is just that, whenever we fail to handle
|
||||
// a packet we let the core stack deal with things.
|
||||
// (The core stack needs to handle limits correctly anyway,
|
||||
// since we don't offload all traffic in both directions)
|
||||
if (stat_v->rxBytes + stat_v->txBytes + bytes > *limit_v) return TC_ACT_OK;
|
||||
|
||||
if (!is_ethernet) {
|
||||
is_ethernet = true;
|
||||
l2_header_size = sizeof(struct ethhdr);
|
||||
// Try to inject an ethernet header, and simply return if we fail
|
||||
if (bpf_skb_change_head(skb, l2_header_size, /*flags*/ 0)) {
|
||||
__sync_fetch_and_add(&stat_v->rxErrors, 1);
|
||||
return TC_ACT_OK;
|
||||
}
|
||||
|
||||
// bpf_skb_change_head() invalidates all pointers - reload them
|
||||
data = (void*)(long)skb->data;
|
||||
data_end = (void*)(long)skb->data_end;
|
||||
eth = data;
|
||||
ip6 = (void*)(eth + 1);
|
||||
|
||||
// I do not believe this can ever happen, but keep the verifier happy...
|
||||
if (data + l2_header_size + sizeof(*ip6) > data_end) {
|
||||
__sync_fetch_and_add(&stat_v->rxErrors, 1);
|
||||
return TC_ACT_SHOT;
|
||||
}
|
||||
};
|
||||
|
||||
// CHECKSUM_COMPLETE is a 16-bit one's complement sum,
|
||||
// thus corrections for it need to be done in 16-byte chunks at even offsets.
|
||||
// IPv6 nexthdr is at offset 6, while hop limit is at offset 7
|
||||
uint8_t old_hl = ip6->hop_limit;
|
||||
--ip6->hop_limit;
|
||||
uint8_t new_hl = ip6->hop_limit;
|
||||
|
||||
// bpf_csum_update() always succeeds if the skb is CHECKSUM_COMPLETE and returns an error
|
||||
// (-ENOTSUPP) if it isn't.
|
||||
bpf_csum_update(skb, 0xFFFF - ntohs(old_hl) + ntohs(new_hl));
|
||||
|
||||
__sync_fetch_and_add(&stat_v->rxPackets, packets);
|
||||
__sync_fetch_and_add(&stat_v->rxBytes, bytes);
|
||||
|
||||
// Overwrite any mac header with the new one
|
||||
*eth = v->macHeader;
|
||||
|
||||
// Redirect to forwarded interface.
|
||||
//
|
||||
// Note that bpf_redirect() cannot fail unless you pass invalid flags.
|
||||
// The redirect actually happens after the ebpf program has already terminated,
|
||||
// and can fail for example for mtu reasons at that point in time, but there's nothing
|
||||
// we can do about it here.
|
||||
return bpf_redirect(v->oif, 0 /* this is effectively BPF_F_EGRESS */);
|
||||
}
|
||||
|
||||
SEC("schedcls/ingress/tether_ether")
|
||||
int sched_cls_ingress_tether_ether(struct __sk_buff* skb) {
|
||||
return do_forward(skb, true);
|
||||
}
|
||||
|
||||
// Note: section names must be unique to prevent programs from appending to each other,
|
||||
// so instead the bpf loader will strip everything past the final $ symbol when actually
|
||||
// pinning the program into the filesystem.
|
||||
//
|
||||
// bpf_skb_change_head() is only present on 4.14+ and 2 trivial kernel patches are needed:
|
||||
// ANDROID: net: bpf: Allow TC programs to call BPF_FUNC_skb_change_head
|
||||
// ANDROID: net: bpf: permit redirect from ingress L3 to egress L2 devices at near max mtu
|
||||
// (the first of those has already been upstreamed)
|
||||
//
|
||||
// 5.4 kernel support was only added to Android Common Kernel in R,
|
||||
// and thus a 5.4 kernel always supports this.
|
||||
//
|
||||
// Hence, this mandatory (must load successfully) implementation for 5.4+ kernels:
|
||||
DEFINE_BPF_PROG_KVER("schedcls/ingress/tether_rawip$5_4", AID_ROOT, AID_ROOT,
|
||||
sched_cls_ingress_tether_rawip_5_4, KVER(5, 4, 0))
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward(skb, false);
|
||||
}
|
||||
|
||||
// and this identical optional (may fail to load) implementation for [4.14..5.4) patched kernels:
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE("schedcls/ingress/tether_rawip$4_14", AID_ROOT, AID_ROOT,
|
||||
sched_cls_ingress_tether_rawip_4_14, KVER(4, 14, 0),
|
||||
KVER(5, 4, 0))
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward(skb, false);
|
||||
}
|
||||
|
||||
// and define a no-op stub for [4.9,4.14) and unpatched [4.14,5.4) kernels.
|
||||
// (if the above real 4.14+ program loaded successfully, then bpfloader will have already pinned
|
||||
// it at the same location this one would be pinned at and will thus skip loading this stub)
|
||||
DEFINE_BPF_PROG_KVER_RANGE("schedcls/ingress/tether_rawip$stub", AID_ROOT, AID_ROOT,
|
||||
sched_cls_ingress_tether_rawip_stub, KVER_NONE, KVER(5, 4, 0))
|
||||
(struct __sk_buff* skb) {
|
||||
return TC_ACT_OK;
|
||||
}
|
||||
|
||||
LICENSE("Apache 2.0");
|
||||
CRITICAL("netd");
|
||||
@@ -1,50 +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.
|
||||
|
||||
java_sdk_library {
|
||||
name: "framework-tethering",
|
||||
defaults: ["framework-module-defaults"],
|
||||
impl_library_visibility: [
|
||||
"//frameworks/base/packages/Tethering:__subpackages__",
|
||||
"//packages/modules/Connectivity/Tethering:__subpackages__",
|
||||
],
|
||||
|
||||
srcs: [":framework-tethering-srcs"],
|
||||
|
||||
jarjar_rules: "jarjar-rules.txt",
|
||||
installable: true,
|
||||
|
||||
hostdex: true, // for hiddenapi check
|
||||
apex_available: ["com.android.tethering"],
|
||||
permitted_packages: ["android.net"],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "framework-tethering-srcs",
|
||||
srcs: [
|
||||
"src/android/net/TetheredClient.aidl",
|
||||
"src/android/net/TetheredClient.java",
|
||||
"src/android/net/TetheringManager.java",
|
||||
"src/android/net/TetheringConstants.java",
|
||||
"src/android/net/IIntResultListener.aidl",
|
||||
"src/android/net/ITetheringEventCallback.aidl",
|
||||
"src/android/net/ITetheringConnector.aidl",
|
||||
"src/android/net/TetheringCallbackStartedParcel.aidl",
|
||||
"src/android/net/TetheringConfigurationParcel.aidl",
|
||||
"src/android/net/TetheringRequestParcel.aidl",
|
||||
"src/android/net/TetherStatesParcel.aidl",
|
||||
],
|
||||
path: "src"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
// Signature format: 2.0
|
||||
@@ -1,41 +0,0 @@
|
||||
// Signature format: 2.0
|
||||
package android.net {
|
||||
|
||||
public final class TetheringConstants {
|
||||
field public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
|
||||
field public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
|
||||
field public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
|
||||
field public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
|
||||
field public static final String EXTRA_SET_ALARM = "extraSetAlarm";
|
||||
}
|
||||
|
||||
public class TetheringManager {
|
||||
ctor public TetheringManager(@NonNull android.content.Context, @NonNull java.util.function.Supplier<android.os.IBinder>);
|
||||
method public int getLastTetherError(@NonNull String);
|
||||
method @NonNull public String[] getTetherableBluetoothRegexs();
|
||||
method @NonNull public String[] getTetherableIfaces();
|
||||
method @NonNull public String[] getTetherableUsbRegexs();
|
||||
method @NonNull public String[] getTetherableWifiRegexs();
|
||||
method @NonNull public String[] getTetheredIfaces();
|
||||
method @NonNull public String[] getTetheringErroredIfaces();
|
||||
method public boolean isTetheringSupported();
|
||||
method public boolean isTetheringSupported(@NonNull String);
|
||||
method public void requestLatestTetheringEntitlementResult(int, @NonNull android.os.ResultReceiver, boolean);
|
||||
method @Deprecated public int setUsbTethering(boolean);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(int, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
|
||||
method @Deprecated public int tether(@NonNull String);
|
||||
method @Deprecated public int untether(@NonNull String);
|
||||
}
|
||||
|
||||
public static interface TetheringManager.TetheringEventCallback {
|
||||
method public default void onTetherableInterfaceRegexpsChanged(@NonNull android.net.TetheringManager.TetheringInterfaceRegexps);
|
||||
}
|
||||
|
||||
public static class TetheringManager.TetheringInterfaceRegexps {
|
||||
method @NonNull public java.util.List<java.lang.String> getTetherableBluetoothRegexs();
|
||||
method @NonNull public java.util.List<java.lang.String> getTetherableUsbRegexs();
|
||||
method @NonNull public java.util.List<java.lang.String> getTetherableWifiRegexs();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
// Signature format: 2.0
|
||||
@@ -1 +0,0 @@
|
||||
// Signature format: 2.0
|
||||
@@ -1,99 +0,0 @@
|
||||
// Signature format: 2.0
|
||||
package android.net {
|
||||
|
||||
public final class TetheredClient implements android.os.Parcelable {
|
||||
ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int);
|
||||
method public int describeContents();
|
||||
method @NonNull public java.util.List<android.net.TetheredClient.AddressInfo> getAddresses();
|
||||
method @NonNull public android.net.MacAddress getMacAddress();
|
||||
method public int getTetheringType();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient> CREATOR;
|
||||
}
|
||||
|
||||
public static final class TetheredClient.AddressInfo implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method @NonNull public android.net.LinkAddress getAddress();
|
||||
method @Nullable public String getHostname();
|
||||
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient.AddressInfo> CREATOR;
|
||||
}
|
||||
|
||||
public class TetheringManager {
|
||||
method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.TetheringEventCallback);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void requestLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.OnTetheringEntitlementResultListener);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopAllTethering();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(int);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.ACCESS_NETWORK_STATE}) public void unregisterTetheringEventCallback(@NonNull android.net.TetheringManager.TetheringEventCallback);
|
||||
field public static final String ACTION_TETHER_STATE_CHANGED = "android.net.conn.TETHER_STATE_CHANGED";
|
||||
field public static final String EXTRA_ACTIVE_LOCAL_ONLY = "android.net.extra.ACTIVE_LOCAL_ONLY";
|
||||
field public static final String EXTRA_ACTIVE_TETHER = "tetherArray";
|
||||
field public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
|
||||
field public static final String EXTRA_ERRORED_TETHER = "erroredArray";
|
||||
field public static final int TETHERING_BLUETOOTH = 2; // 0x2
|
||||
field public static final int TETHERING_ETHERNET = 5; // 0x5
|
||||
field public static final int TETHERING_INVALID = -1; // 0xffffffff
|
||||
field public static final int TETHERING_NCM = 4; // 0x4
|
||||
field public static final int TETHERING_USB = 1; // 0x1
|
||||
field public static final int TETHERING_WIFI = 0; // 0x0
|
||||
field public static final int TETHERING_WIFI_P2P = 3; // 0x3
|
||||
field public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; // 0xc
|
||||
field public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9; // 0x9
|
||||
field public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8; // 0x8
|
||||
field public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; // 0xd
|
||||
field public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; // 0xa
|
||||
field public static final int TETHER_ERROR_INTERNAL_ERROR = 5; // 0x5
|
||||
field public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15; // 0xf
|
||||
field public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14; // 0xe
|
||||
field public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
|
||||
field public static final int TETHER_ERROR_PROVISIONING_FAILED = 11; // 0xb
|
||||
field public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; // 0x2
|
||||
field public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; // 0x6
|
||||
field public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; // 0x4
|
||||
field public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; // 0x1
|
||||
field public static final int TETHER_ERROR_UNKNOWN_TYPE = 16; // 0x10
|
||||
field public static final int TETHER_ERROR_UNSUPPORTED = 3; // 0x3
|
||||
field public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; // 0x7
|
||||
field public static final int TETHER_HARDWARE_OFFLOAD_FAILED = 2; // 0x2
|
||||
field public static final int TETHER_HARDWARE_OFFLOAD_STARTED = 1; // 0x1
|
||||
field public static final int TETHER_HARDWARE_OFFLOAD_STOPPED = 0; // 0x0
|
||||
}
|
||||
|
||||
public static interface TetheringManager.OnTetheringEntitlementResultListener {
|
||||
method public void onTetheringEntitlementResult(int);
|
||||
}
|
||||
|
||||
public static interface TetheringManager.StartTetheringCallback {
|
||||
method public default void onTetheringFailed(int);
|
||||
method public default void onTetheringStarted();
|
||||
}
|
||||
|
||||
public static interface TetheringManager.TetheringEventCallback {
|
||||
method public default void onClientsChanged(@NonNull java.util.Collection<android.net.TetheredClient>);
|
||||
method public default void onError(@NonNull String, int);
|
||||
method public default void onOffloadStatusChanged(int);
|
||||
method public default void onTetherableInterfacesChanged(@NonNull java.util.List<java.lang.String>);
|
||||
method public default void onTetheredInterfacesChanged(@NonNull java.util.List<java.lang.String>);
|
||||
method public default void onTetheringSupported(boolean);
|
||||
method public default void onUpstreamChanged(@Nullable android.net.Network);
|
||||
}
|
||||
|
||||
public static class TetheringManager.TetheringRequest {
|
||||
method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
|
||||
method @Nullable public android.net.LinkAddress getLocalIpv4Address();
|
||||
method public boolean getShouldShowEntitlementUi();
|
||||
method public int getTetheringType();
|
||||
method public boolean isExemptFromEntitlementCheck();
|
||||
}
|
||||
|
||||
public static class TetheringManager.TetheringRequest.Builder {
|
||||
ctor public TetheringManager.TetheringRequest.Builder(int);
|
||||
method @NonNull public android.net.TetheringManager.TetheringRequest build();
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setShouldShowEntitlementUi(boolean);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
// Signature format: 2.0
|
||||
@@ -1 +0,0 @@
|
||||
# jarjar rules for the bootclasspath tethering framework library here
|
||||
@@ -1,25 +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.
|
||||
*/
|
||||
|
||||
package android.net;
|
||||
|
||||
/**
|
||||
* Listener interface allowing objects to listen to various module event.
|
||||
* {@hide}
|
||||
*/
|
||||
oneway interface IIntResultListener {
|
||||
void onResult(int resultCode);
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 android.net;
|
||||
|
||||
import android.net.IIntResultListener;
|
||||
import android.net.ITetheringEventCallback;
|
||||
import android.net.TetheringRequestParcel;
|
||||
import android.os.ResultReceiver;
|
||||
|
||||
/** @hide */
|
||||
oneway interface ITetheringConnector {
|
||||
void tether(String iface, String callerPkg, String callingAttributionTag,
|
||||
IIntResultListener receiver);
|
||||
|
||||
void untether(String iface, String callerPkg, String callingAttributionTag,
|
||||
IIntResultListener receiver);
|
||||
|
||||
void setUsbTethering(boolean enable, String callerPkg,
|
||||
String callingAttributionTag, IIntResultListener receiver);
|
||||
|
||||
void startTethering(in TetheringRequestParcel request, String callerPkg,
|
||||
String callingAttributionTag, IIntResultListener receiver);
|
||||
|
||||
void stopTethering(int type, String callerPkg, String callingAttributionTag,
|
||||
IIntResultListener receiver);
|
||||
|
||||
void requestLatestTetheringEntitlementResult(int type, in ResultReceiver receiver,
|
||||
boolean showEntitlementUi, String callerPkg, String callingAttributionTag);
|
||||
|
||||
void registerTetheringEventCallback(ITetheringEventCallback callback, String callerPkg);
|
||||
|
||||
void unregisterTetheringEventCallback(ITetheringEventCallback callback, String callerPkg);
|
||||
|
||||
void isTetheringSupported(String callerPkg, String callingAttributionTag,
|
||||
IIntResultListener receiver);
|
||||
|
||||
void stopAllTethering(String callerPkg, String callingAttributionTag,
|
||||
IIntResultListener receiver);
|
||||
}
|
||||
@@ -1,39 +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.
|
||||
*/
|
||||
|
||||
package android.net;
|
||||
|
||||
import android.net.Network;
|
||||
import android.net.TetheredClient;
|
||||
import android.net.TetheringConfigurationParcel;
|
||||
import android.net.TetheringCallbackStartedParcel;
|
||||
import android.net.TetherStatesParcel;
|
||||
|
||||
/**
|
||||
* Callback class for receiving tethering changed events.
|
||||
* @hide
|
||||
*/
|
||||
oneway interface ITetheringEventCallback
|
||||
{
|
||||
/** Called immediately after the callbacks are registered */
|
||||
void onCallbackStarted(in TetheringCallbackStartedParcel parcel);
|
||||
void onCallbackStopped(int errorCode);
|
||||
void onUpstreamChanged(in Network network);
|
||||
void onConfigurationChanged(in TetheringConfigurationParcel config);
|
||||
void onTetherStatesChanged(in TetherStatesParcel states);
|
||||
void onTetherClientsChanged(in List<TetheredClient> clients);
|
||||
void onOffloadStatusChanged(int status);
|
||||
}
|
||||
@@ -1,31 +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.
|
||||
*/
|
||||
|
||||
package android.net;
|
||||
|
||||
/**
|
||||
* Status details for tethering downstream interfaces.
|
||||
* {@hide}
|
||||
*/
|
||||
parcelable TetherStatesParcel {
|
||||
String[] availableList;
|
||||
String[] tetheredList;
|
||||
String[] localOnlyList;
|
||||
String[] erroredIfaceList;
|
||||
// List of Last error code corresponding to each errored iface in erroredIfaceList. */
|
||||
// TODO: Improve this as b/143122247.
|
||||
int[] lastErrorList;
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2020 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 android.net;
|
||||
|
||||
@JavaOnlyStableParcelable parcelable TetheredClient;
|
||||
@@ -1,239 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 android.net;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Information on a tethered downstream client.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public final class TetheredClient implements Parcelable {
|
||||
@NonNull
|
||||
private final MacAddress mMacAddress;
|
||||
@NonNull
|
||||
private final List<AddressInfo> mAddresses;
|
||||
// TODO: use an @IntDef here
|
||||
private final int mTetheringType;
|
||||
|
||||
public TetheredClient(@NonNull MacAddress macAddress,
|
||||
@NonNull Collection<AddressInfo> addresses, int tetheringType) {
|
||||
mMacAddress = macAddress;
|
||||
mAddresses = new ArrayList<>(addresses);
|
||||
mTetheringType = tetheringType;
|
||||
}
|
||||
|
||||
private TetheredClient(@NonNull Parcel in) {
|
||||
this(in.readParcelable(null), in.createTypedArrayList(AddressInfo.CREATOR), in.readInt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeParcelable(mMacAddress, flags);
|
||||
dest.writeTypedList(mAddresses);
|
||||
dest.writeInt(mTetheringType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the MAC address used to identify the client.
|
||||
*/
|
||||
@NonNull
|
||||
public MacAddress getMacAddress() {
|
||||
return mMacAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information on the list of addresses that are associated with the client.
|
||||
*/
|
||||
@NonNull
|
||||
public List<AddressInfo> getAddresses() {
|
||||
return new ArrayList<>(mAddresses);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of tethering used by the client.
|
||||
* @return one of the {@code TetheringManager#TETHERING_*} constants.
|
||||
*/
|
||||
public int getTetheringType() {
|
||||
return mTetheringType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link TetheredClient} that has all the attributes of this instance, plus the
|
||||
* {@link AddressInfo} of the provided {@link TetheredClient}.
|
||||
*
|
||||
* <p>Duplicate addresses are removed.
|
||||
* @hide
|
||||
*/
|
||||
public TetheredClient addAddresses(@NonNull TetheredClient other) {
|
||||
final LinkedHashSet<AddressInfo> newAddresses = new LinkedHashSet<>(
|
||||
mAddresses.size() + other.mAddresses.size());
|
||||
newAddresses.addAll(mAddresses);
|
||||
newAddresses.addAll(other.mAddresses);
|
||||
return new TetheredClient(mMacAddress, newAddresses, mTetheringType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mMacAddress, mAddresses, mTetheringType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(@Nullable Object obj) {
|
||||
if (!(obj instanceof TetheredClient)) return false;
|
||||
final TetheredClient other = (TetheredClient) obj;
|
||||
return mMacAddress.equals(other.mMacAddress)
|
||||
&& mAddresses.equals(other.mAddresses)
|
||||
&& mTetheringType == other.mTetheringType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Information on an lease assigned to a tethered client.
|
||||
*/
|
||||
public static final class AddressInfo implements Parcelable {
|
||||
@NonNull
|
||||
private final LinkAddress mAddress;
|
||||
@Nullable
|
||||
private final String mHostname;
|
||||
|
||||
/** @hide */
|
||||
public AddressInfo(@NonNull LinkAddress address, @Nullable String hostname) {
|
||||
this.mAddress = address;
|
||||
this.mHostname = hostname;
|
||||
}
|
||||
|
||||
private AddressInfo(Parcel in) {
|
||||
this(in.readParcelable(null), in.readString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeParcelable(mAddress, flags);
|
||||
dest.writeString(mHostname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the link address (including prefix length and lifetime) used by the client.
|
||||
*
|
||||
* This may be an IPv4 or IPv6 address.
|
||||
*/
|
||||
@NonNull
|
||||
public LinkAddress getAddress() {
|
||||
return mAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the hostname that was advertised by the client when obtaining its address, if any.
|
||||
*/
|
||||
@Nullable
|
||||
public String getHostname() {
|
||||
return mHostname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the expiration time of the address assigned to the client.
|
||||
* @hide
|
||||
*/
|
||||
public long getExpirationTime() {
|
||||
return mAddress.getExpirationTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mAddress, mHostname);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(@Nullable Object obj) {
|
||||
if (!(obj instanceof AddressInfo)) return false;
|
||||
final AddressInfo other = (AddressInfo) obj;
|
||||
// Use .equals() for addresses as all changes, including address expiry changes,
|
||||
// should be included.
|
||||
return other.mAddress.equals(mAddress)
|
||||
&& Objects.equals(mHostname, other.mHostname);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static final Creator<AddressInfo> CREATOR = new Creator<AddressInfo>() {
|
||||
@NonNull
|
||||
@Override
|
||||
public AddressInfo createFromParcel(@NonNull Parcel in) {
|
||||
return new AddressInfo(in);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public AddressInfo[] newArray(int size) {
|
||||
return new AddressInfo[size];
|
||||
}
|
||||
};
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AddressInfo {"
|
||||
+ mAddress
|
||||
+ (mHostname != null ? ", hostname " + mHostname : "")
|
||||
+ "}";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static final Creator<TetheredClient> CREATOR = new Creator<TetheredClient>() {
|
||||
@NonNull
|
||||
@Override
|
||||
public TetheredClient createFromParcel(@NonNull Parcel in) {
|
||||
return new TetheredClient(in);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public TetheredClient[] newArray(int size) {
|
||||
return new TetheredClient[size];
|
||||
}
|
||||
};
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TetheredClient {hwAddr " + mMacAddress
|
||||
+ ", addresses " + mAddresses
|
||||
+ ", tetheringType " + mTetheringType
|
||||
+ "}";
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 android.net;
|
||||
|
||||
import android.net.Network;
|
||||
import android.net.TetheredClient;
|
||||
import android.net.TetheringConfigurationParcel;
|
||||
import android.net.TetherStatesParcel;
|
||||
|
||||
/**
|
||||
* Initial information reported by tethering upon callback registration.
|
||||
* @hide
|
||||
*/
|
||||
parcelable TetheringCallbackStartedParcel {
|
||||
boolean tetheringSupported;
|
||||
Network upstreamNetwork;
|
||||
TetheringConfigurationParcel config;
|
||||
TetherStatesParcel states;
|
||||
List<TetheredClient> tetheredClients;
|
||||
int offloadStatus;
|
||||
}
|
||||
@@ -1,37 +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.
|
||||
*/
|
||||
|
||||
package android.net;
|
||||
|
||||
/**
|
||||
* Configuration details for tethering.
|
||||
* @hide
|
||||
*/
|
||||
parcelable TetheringConfigurationParcel {
|
||||
int subId;
|
||||
String[] tetherableUsbRegexs;
|
||||
String[] tetherableWifiRegexs;
|
||||
String[] tetherableBluetoothRegexs;
|
||||
boolean isDunRequired;
|
||||
boolean chooseUpstreamAutomatically;
|
||||
int[] preferredUpstreamIfaceTypes;
|
||||
String[] legacyDhcpRanges;
|
||||
String[] defaultIPv4DNS;
|
||||
boolean enableLegacyDhcpServer;
|
||||
String[] provisioningApp;
|
||||
String provisioningAppNoUi;
|
||||
int provisioningCheckPeriod;
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 android.net;
|
||||
|
||||
import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
|
||||
|
||||
import android.annotation.SystemApi;
|
||||
import android.os.ResultReceiver;
|
||||
|
||||
/**
|
||||
* Collections of constants for internal tethering usage.
|
||||
*
|
||||
* <p>These hidden constants are not in TetheringManager as they are not part of the API stubs
|
||||
* generated for TetheringManager, which prevents the tethering module from linking them at
|
||||
* build time.
|
||||
* TODO: investigate changing the tethering build rules so that Tethering can reference hidden
|
||||
* symbols from framework-tethering even when they are in a non-hidden class.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = MODULE_LIBRARIES)
|
||||
public final class TetheringConstants {
|
||||
/** An explicit private class to avoid exposing constructor.*/
|
||||
private TetheringConstants() { }
|
||||
|
||||
/**
|
||||
* Extra used for communicating with the TetherService and TetherProvisioningActivity.
|
||||
* Includes the type of tethering to enable if any.
|
||||
*/
|
||||
public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
|
||||
/**
|
||||
* Extra used for communicating with the TetherService. Includes the type of tethering for
|
||||
* which to cancel provisioning.
|
||||
*/
|
||||
public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
|
||||
/**
|
||||
* Extra used for communicating with the TetherService. True to schedule a recheck of tether
|
||||
* provisioning.
|
||||
*/
|
||||
public static final String EXTRA_SET_ALARM = "extraSetAlarm";
|
||||
/**
|
||||
* Tells the TetherService to run a provision check now.
|
||||
*/
|
||||
public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
|
||||
/**
|
||||
* Extra used for communicating with the TetherService and TetherProvisioningActivity.
|
||||
* Contains the {@link ResultReceiver} which will receive provisioning results.
|
||||
* Can not be empty.
|
||||
*/
|
||||
public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
|
||||
|
||||
/**
|
||||
* Extra used for communicating with the TetherService and TetherProvisioningActivity.
|
||||
* Contains the subId of current active cellular upstream.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_TETHER_SUBID = "android.net.extra.TETHER_SUBID";
|
||||
|
||||
/**
|
||||
* Extra used for telling TetherProvisioningActivity the entitlement package name and class
|
||||
* name to start UI entitlement check.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_TETHER_UI_PROVISIONING_APP_NAME =
|
||||
"android.net.extra.TETHER_UI_PROVISIONING_APP_NAME";
|
||||
|
||||
/**
|
||||
* Extra used for telling TetherService the intent action to start silent entitlement check.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_TETHER_SILENT_PROVISIONING_ACTION =
|
||||
"android.net.extra.TETHER_SILENT_PROVISIONING_ACTION";
|
||||
|
||||
/**
|
||||
* Extra used for TetherService to receive the response of provisioning check.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_TETHER_PROVISIONING_RESPONSE =
|
||||
"android.net.extra.TETHER_PROVISIONING_RESPONSE";
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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 android.net;
|
||||
|
||||
import android.net.LinkAddress;
|
||||
|
||||
/**
|
||||
* Configuration details for requesting tethering.
|
||||
* @hide
|
||||
*/
|
||||
parcelable TetheringRequestParcel {
|
||||
int tetheringType;
|
||||
LinkAddress localIPv4Address;
|
||||
LinkAddress staticClientAddress;
|
||||
boolean exemptFromEntitlementCheck;
|
||||
boolean showProvisioningUi;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
# These must be kept in sync with the framework-tethering-shared-srcs filegroup.
|
||||
# Classes from the framework-tethering-shared-srcs filegroup.
|
||||
# If there are files in that filegroup that are not covered below, the classes in the
|
||||
# module will be overwritten by the ones in the framework.
|
||||
rule com.android.internal.util.** com.android.networkstack.tethering.util.@1
|
||||
rule android.util.LocalLog* com.android.networkstack.tethering.util.LocalLog@1
|
||||
|
||||
rule android.net.shared.Inet4AddressUtils* com.android.networkstack.tethering.shared.Inet4AddressUtils@1
|
||||
|
||||
# Classes from net-utils-framework-common
|
||||
rule com.android.net.module.util.** com.android.networkstack.tethering.util.@1
|
||||
@@ -1,201 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <error.h>
|
||||
#include <jni.h>
|
||||
#include <linux/filter.h>
|
||||
#include <nativehelper/JNIHelp.h>
|
||||
#include <nativehelper/JNIHelpCompat.h>
|
||||
#include <nativehelper/ScopedUtfChars.h>
|
||||
#include <net/if.h>
|
||||
#include <netinet/ether.h>
|
||||
#include <netinet/ip6.h>
|
||||
#include <netinet/icmp6.h>
|
||||
#include <sys/socket.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define LOG_TAG "TetheringUtils"
|
||||
#include <android/log.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
static const uint32_t kIPv6NextHeaderOffset = offsetof(ip6_hdr, ip6_nxt);
|
||||
static const uint32_t kIPv6PayloadStart = sizeof(ip6_hdr);
|
||||
static const uint32_t kICMPv6TypeOffset = kIPv6PayloadStart + offsetof(icmp6_hdr, icmp6_type);
|
||||
|
||||
static void android_net_util_setupIcmpFilter(JNIEnv *env, jobject javaFd, uint32_t type) {
|
||||
sock_filter filter_code[] = {
|
||||
// Check header is ICMPv6.
|
||||
BPF_STMT(BPF_LD | BPF_B | BPF_ABS, kIPv6NextHeaderOffset),
|
||||
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, IPPROTO_ICMPV6, 0, 3),
|
||||
|
||||
// Check ICMPv6 type.
|
||||
BPF_STMT(BPF_LD | BPF_B | BPF_ABS, kICMPv6TypeOffset),
|
||||
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, type, 0, 1),
|
||||
|
||||
// Accept or reject.
|
||||
BPF_STMT(BPF_RET | BPF_K, 0xffff),
|
||||
BPF_STMT(BPF_RET | BPF_K, 0)
|
||||
};
|
||||
|
||||
const sock_fprog filter = {
|
||||
sizeof(filter_code) / sizeof(filter_code[0]),
|
||||
filter_code,
|
||||
};
|
||||
|
||||
int fd = jniGetFDFromFileDescriptor(env, javaFd);
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(SO_ATTACH_FILTER): %s", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
static void android_net_util_setupNaSocket(JNIEnv *env, jobject clazz, jobject javaFd)
|
||||
{
|
||||
android_net_util_setupIcmpFilter(env, javaFd, ND_NEIGHBOR_ADVERT);
|
||||
}
|
||||
|
||||
static void android_net_util_setupNsSocket(JNIEnv *env, jobject clazz, jobject javaFd)
|
||||
{
|
||||
android_net_util_setupIcmpFilter(env, javaFd, ND_NEIGHBOR_SOLICIT);
|
||||
}
|
||||
|
||||
static void android_net_util_setupRaSocket(JNIEnv *env, jobject clazz, jobject javaFd,
|
||||
jint ifIndex)
|
||||
{
|
||||
static const int kLinkLocalHopLimit = 255;
|
||||
|
||||
int fd = jniGetFDFromFileDescriptor(env, javaFd);
|
||||
|
||||
// Set an ICMPv6 filter that only passes Router Solicitations.
|
||||
struct icmp6_filter rs_only;
|
||||
ICMP6_FILTER_SETBLOCKALL(&rs_only);
|
||||
ICMP6_FILTER_SETPASS(ND_ROUTER_SOLICIT, &rs_only);
|
||||
socklen_t len = sizeof(rs_only);
|
||||
if (setsockopt(fd, IPPROTO_ICMPV6, ICMP6_FILTER, &rs_only, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(ICMP6_FILTER): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// Most/all of the rest of these options can be set via Java code, but
|
||||
// because we're here on account of setting an icmp6_filter go ahead
|
||||
// and do it all natively for now.
|
||||
|
||||
// Set the multicast hoplimit to 255 (link-local only).
|
||||
int hops = kLinkLocalHopLimit;
|
||||
len = sizeof(hops);
|
||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(IPV6_MULTICAST_HOPS): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the unicast hoplimit to 255 (link-local only).
|
||||
hops = kLinkLocalHopLimit;
|
||||
len = sizeof(hops);
|
||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &hops, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(IPV6_UNICAST_HOPS): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// Explicitly disable multicast loopback.
|
||||
int off = 0;
|
||||
len = sizeof(off);
|
||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &off, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(IPV6_MULTICAST_LOOP): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// Specify the IPv6 interface to use for outbound multicast.
|
||||
len = sizeof(ifIndex);
|
||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF, &ifIndex, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(IPV6_MULTICAST_IF): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// Additional options to be considered:
|
||||
// - IPV6_TCLASS
|
||||
// - IPV6_RECVPKTINFO
|
||||
// - IPV6_RECVHOPLIMIT
|
||||
|
||||
// Bind to [::].
|
||||
const struct sockaddr_in6 sin6 = {
|
||||
.sin6_family = AF_INET6,
|
||||
.sin6_port = 0,
|
||||
.sin6_flowinfo = 0,
|
||||
.sin6_addr = IN6ADDR_ANY_INIT,
|
||||
.sin6_scope_id = 0,
|
||||
};
|
||||
auto sa = reinterpret_cast<const struct sockaddr *>(&sin6);
|
||||
len = sizeof(sin6);
|
||||
if (bind(fd, sa, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"bind(IN6ADDR_ANY): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// Join the all-routers multicast group, ff02::2%index.
|
||||
struct ipv6_mreq all_rtrs = {
|
||||
.ipv6mr_multiaddr = {{{0xff,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2}}},
|
||||
.ipv6mr_interface = ifIndex,
|
||||
};
|
||||
len = sizeof(all_rtrs);
|
||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &all_rtrs, len) != 0) {
|
||||
jniThrowExceptionFmt(env, "java/net/SocketException",
|
||||
"setsockopt(IPV6_JOIN_GROUP): %s", strerror(errno));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* JNI registration.
|
||||
*/
|
||||
static const JNINativeMethod gMethods[] = {
|
||||
/* name, signature, funcPtr */
|
||||
{ "setupNaSocket", "(Ljava/io/FileDescriptor;)V",
|
||||
(void*) android_net_util_setupNaSocket },
|
||||
{ "setupNsSocket", "(Ljava/io/FileDescriptor;)V",
|
||||
(void*) android_net_util_setupNsSocket },
|
||||
{ "setupRaSocket", "(Ljava/io/FileDescriptor;I)V",
|
||||
(void*) android_net_util_setupRaSocket },
|
||||
};
|
||||
|
||||
int register_android_net_util_TetheringUtils(JNIEnv* env) {
|
||||
return jniRegisterNativeMethods(env,
|
||||
"android/net/util/TetheringUtils",
|
||||
gMethods, NELEM(gMethods));
|
||||
}
|
||||
|
||||
extern "C" jint JNI_OnLoad(JavaVM* vm, void*) {
|
||||
JNIEnv *env;
|
||||
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
|
||||
__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "ERROR: GetEnv failed");
|
||||
return JNI_ERR;
|
||||
}
|
||||
|
||||
if (register_android_net_util_TetheringUtils(env) < 0) {
|
||||
return JNI_ERR;
|
||||
}
|
||||
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
}; // namespace android
|
||||
@@ -1,9 +0,0 @@
|
||||
# Keep class's integer static field for MessageUtils to parsing their name.
|
||||
-keep class com.android.networkstack.tethering.Tethering$TetherMainSM {
|
||||
static final int CMD_*;
|
||||
static final int EVENT_*;
|
||||
}
|
||||
|
||||
-keepclassmembers class android.net.ip.IpServer {
|
||||
static final int CMD_*;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 891 B |
|
Before Width: | Height: | Size: 963 B |
|
Before Width: | Height: | Size: 909 B |
|
Before Width: | Height: | Size: 534 B |
|
Before Width: | Height: | Size: 554 B |
|
Before Width: | Height: | Size: 518 B |
|
Before Width: | Height: | Size: 675 B |
|
Before Width: | Height: | Size: 659 B |
|
Before Width: | Height: | Size: 698 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1002 B |
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Verbinding of warmkol is aktief"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tik om op te stel."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Verbinding is gedeaktiveer"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontak jou administrateur vir besonderhede"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Warmkol- en verbindingstatus"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"እንደ ሞደም መሰካት ወይም መገናኛ ነጥብ ገባሪ"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"ለማዋቀር መታ ያድርጉ።"</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"እንደ ሞደም መሰካት ተሰናክሏል"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"ለዝርዝሮች የእርስዎን አስተዳዳሪ ያነጋግሩ"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"መገናኛ ነጥብ እና እንደ ሞደም የመሰካት ሁኔታ"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"النطاق نشط أو نقطة الاتصال نشطة"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"انقر للإعداد."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"التوصيل متوقف."</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"تواصَل مع المشرف للحصول على التفاصيل."</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"حالة نقطة الاتصال والتوصيل"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"টে\'ডাৰিং অথবা হ\'টস্প\'ট সক্ৰিয় অৱস্থাত আছে"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"ছেট আপ কৰিবলৈ টিপক।"</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"টে\'ডাৰিঙৰ সুবিধাটো অক্ষম কৰি থোৱা হৈছে"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"সবিশেষ জানিবলৈ আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"হ’টস্প\'ট আৰু টে\'ডাৰিঙৰ স্থিতি"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Birləşmə və ya hotspot aktivdir"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Ayarlamaq üçün toxunun."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Birləşmə deaktivdir"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Detallar üçün adminlə əlaqə saxlayın"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot & birləşmə statusu"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Privezivanje ili hotspot je aktivan"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Dodirnite da biste podesili."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Privezivanje je onemogućeno"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Potražite detalje od administratora"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status hotspota i privezivanja"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Мадэм або хот-спот актыўныя"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Дакраніцеся, каб наладзіць."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Рэжым мадэма выключаны"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Звярніцеся да адміністратара па падрабязную інфармацыю"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Стан \"Хот-спот і мадэм\""</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Има активна споделена връзка или точка за достъп"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Докоснете, за да настроите."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Функцията за тетъринг е деактивирана"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Свържете се с администратора си за подробности"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Състояние на функцията за точка за достъп и тетъринг"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"টিথারিং বা হটস্পট চালু আছে"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"সেট-আপ করতে ট্যাপ করুন।"</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"টিথারিং বন্ধ করা আছে"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"বিশদে জানতে অ্যাডমিনের সাথে যোগাযোগ করুন"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"হটস্পট ও টিথারিং স্ট্যাটাস"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Aktivno je povezivanje putem mobitela ili pristupna tačka"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Dodirnite da postavite."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Povezivanje putem mobitela je onemogućeno"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontaktirajte svog administratora za detalje"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status pristupne tačke i povezivanja putem mobitela"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Compartició de xarxa o punt d\'accés Wi‑Fi actius"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Toca per configurar."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"La compartició de xarxa està desactivada"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contacta amb el teu administrador per obtenir més informació"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estat del punt d\'accés Wi‑Fi i de la compartició de xarxa"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering nebo hotspot je aktivní"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Klepnutím zahájíte nastavení."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering je zakázán"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"O podrobnosti požádejte administrátora"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Stav hotspotu a tetheringu"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Netdeling eller hotspot er aktivt"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tryk for at konfigurere."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Netdeling er deaktiveret"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontakt din administrator for at få oplysninger"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status for hotspot og netdeling"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering oder Hotspot aktiv"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Zum Einrichten tippen."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering ist deaktiviert"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Bitte wende dich für weitere Informationen an den Administrator"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot- und Tethering-Status"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Πατήστε για ρύθμιση."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Η σύνδεση είναι απενεργοποιημένη"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Επικοινωνήστε με τον διαχειριστή σας για λεπτομέρειες"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Κατάσταση σημείου πρόσβασης Wi-Fi και σύνδεσης"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot & tethering status"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Conexión a red o hotspot conectados"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Presiona para configurar esta opción."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Se inhabilitó la conexión mediante dispositivo portátil"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Para obtener más información, comunícate con el administrador"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado del hotspot y la conexión mediante dispositivo portátil"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Conexión compartida o punto de acceso activos"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Toca para configurar."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"La conexión compartida está inhabilitada"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Solicita más información a tu administrador"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado del punto de acceso y de la conexión compartida"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Jagamine või kuumkoht on aktiivne"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Puudutage seadistamiseks."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Jagamine on keelatud"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Lisateabe saamiseks võtke ühendust oma administraatoriga"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Kuumkoha ja jagamise olek"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Konexioa partekatzea edo wifi-gunea aktibo dago"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Sakatu konfiguratzeko."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Desgaituta dago konexioa partekatzeko aukera"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Xehetasunak lortzeko, jarri administratzailearekin harremanetan"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Wifi-gunearen eta konexioa partekatzeko eginbidearen egoera"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"اشتراکگذاری اینترنت یا نقطه اتصال فعال"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"برای راهاندازی ضربه بزنید."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"اشتراکگذاری اینترنت غیرفعال است"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"برای جزئیات، با سرپرستتان تماس بگیرید"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"وضعیت نقطه اتصال و اشتراکگذاری اینترنت"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Yhteyden jakaminen tai hotspot käytössä"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Ota käyttöön napauttamalla."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Yhteyden jakaminen on poistettu käytöstä"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Pyydä lisätietoja järjestelmänvalvojalta"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspotin ja yhteyden jakamisen tila"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Partage de connexion ou point d\'accès sans fil activé"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Touchez pour configurer."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Le partage de connexion est désactivé"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Communiquez avec votre administrateur pour obtenir plus de détails"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Point d\'accès et partage de connexion"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Partage de connexion ou point d\'accès activé"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Appuyez pour effectuer la configuration."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Le partage de connexion est désactivé"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Pour en savoir plus, contactez votre administrateur"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"État du point d\'accès et du partage de connexion"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Conexión compartida ou zona wifi activada"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Toca para configurar."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"A conexión compartida está desactivada"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contacta co administrador para obter información"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado da zona wifi e da conexión compartida"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"ઇન્ટરનેટ શેર કરવાની સુવિધા અથવા હૉટસ્પૉટ સક્રિય છે"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"સેટઅપ કરવા માટે ટૅપ કરો."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"ઇન્ટરનેટ શેર કરવાની સુવિધા બંધ કરી છે"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"વિગતો માટે તમારા વ્યવસ્થાપકનો સંપર્ક કરો"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"હૉટસ્પૉટ અને ઇન્ટરનેટ શેર કરવાની સુવિધાનું સ્ટેટસ"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"टेदरिंग या हॉटस्पॉट चालू है"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"सेट अप करने के लिए टैप करें."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"टेदरिंग बंद है"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"जानकारी के लिए अपने एडमिन से संपर्क करें"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"हॉटस्पॉट और टेदरिंग की स्थिति"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Modemsko povezivanje ili žarišna točka aktivni"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Dodirnite da biste postavili."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Modemsko je povezivanje onemogućeno"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Obratite se administratoru da biste saznali pojedinosti"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status žarišne točke i modemskog povezivanja"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Megosztás vagy aktív hotspot"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Koppintson a beállításhoz."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Az internetmegosztás le van tiltva"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"A részletekért forduljon rendszergazdájához"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot és internetmegosztás állapota"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Մոդեմի ռեժիմը միացված է"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Հպեք՝ կարգավորելու համար։"</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Մոդեմի ռեժիմն անջատված է"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Մանրամասների համար դիմեք ձեր ադմինիստրատորին"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Թեժ կետի և մոդեմի ռեժիմի կարգավիճակը"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Tethering atau hotspot aktif"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Ketuk untuk menyiapkan."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering dinonaktifkan"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Hubungi admin untuk mengetahui detailnya"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status hotspot & tethering"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Kveikt á tjóðrun eða aðgangsstað"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Ýttu til að setja upp."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Slökkt er á tjóðrun"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Hafðu samband við kerfisstjórann til að fá upplýsingar"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Staða heits reits og tjóðrunar"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Hotspot o tethering attivo"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Tocca per impostare."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering disattivato"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Contatta il tuo amministratore per avere informazioni dettagliate"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Stato hotspot e tethering"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"נקודה לשיתוף אינטרנט או שיתוף אינטרנט בין מכשירים: בסטטוס פעיל"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"יש להקיש כדי להגדיר."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"שיתוף האינטרנט בין מכשירים מושבת"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"לפרטים, יש לפנות למנהל המערכת"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"סטטוס של נקודה לשיתוף אינטרנט ושיתוף אינטרנט בין מכשירים"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"テザリングまたはアクセス ポイントが有効です"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"タップしてセットアップします。"</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"テザリングは無効に設定されています"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"詳しくは、管理者にお問い合わせください"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"アクセス ポイントとテザリングのステータス"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"ტეტერინგი ან უსადენო ქსელი აქტიურია"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"შეეხეთ დასაყენებლად."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"ტეტერინგი გათიშულია"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"დამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"უსადენო ქსელის და ტეტერინგის სტატუსი"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Тетеринг немесе хотспот қосулы"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Реттеу үшін түртіңіз."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Тетеринг өшірілді."</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Мәліметтерді әкімшіден алыңыз."</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Хотспот және тетеринг күйі"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"ការភ្ជាប់ ឬហតស្ប៉តកំពុងដំណើរការ"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"ចុចដើម្បីរៀបចំ។"</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"ការភ្ជាប់ត្រូវបានបិទ"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"ទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នក ដើម្បីទទួលបានព័ត៌មានលម្អិត"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"ស្ថានភាពនៃការភ្ជាប់ និងហតស្ប៉ត"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"ಟೆಥರಿಂಗ್ ಅಥವಾ ಹಾಟ್ಸ್ಪಾಟ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"ಸೆಟಪ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"ಟೆಥರಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"ಹಾಟ್ಸ್ಪಾಟ್ ಮತ್ತು ಟೆಥರಿಂಗ್ ಸ್ಥಿತಿ"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"테더링 또는 핫스팟 사용"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"설정하려면 탭하세요."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"테더링이 사용 중지됨"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"자세한 정보는 관리자에게 문의하세요."</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"핫스팟 및 테더링 상태"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Модем режими күйүп турат"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Жөндөө үчүн таптап коюңуз."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Телефонду модем катары колдонууга болбойт"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Кеңири маалымат үчүн администраторуңузга кайрылыңыз"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Байланыш түйүнүнүн жана модем режиминин статусу"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"ເປີດການປ່ອຍສັນຍານ ຫຼື ຮັອດສະປອດແລ້ວ"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"ແຕະເພື່ອຕັ້ງຄ່າ."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"ການປ່ອຍສັນຍານຖືກປິດໄວ້"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບສຳລັບລາຍລະອຽດ"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"ສະຖານະຮັອດສະປອດ ແລະ ການປ່ອຍສັນຍານ"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Įrenginys naudojamas kaip modemas arba įjungtas viešosios interneto prieigos taškas"</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Palieskite, kad nustatytumėte."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Įrenginio kaip modemo naudojimas išjungtas"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Jei reikia išsamios informacijos, susisiekite su administratoriumi"</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Viešosios interneto prieigos taško ir įrenginio kaip modemo naudojimo būsena"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="tethered_notification_title" msgid="6426563586025792944">"Piesaiste vai tīklājs ir aktīvs."</string>
|
||||
<string name="tethered_notification_message" msgid="64800879503420696">"Pieskarieties, lai to iestatītu."</string>
|
||||
<string name="disable_tether_notification_title" msgid="3004509127903564191">"Piesaiste ir atspējota"</string>
|
||||
<string name="disable_tether_notification_message" msgid="6717523799293901476">"Lai iegūtu detalizētu informāciju, sazinieties ar savu administratoru."</string>
|
||||
<string name="notification_channel_tethering_status" msgid="2663463891530932727">"Tīklāja un piesaistes statuss"</string>
|
||||
<string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
|
||||
<string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
|
||||
<string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
|
||||
<string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
|
||||
<string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
|
||||
</resources>
|
||||