في نظام التشغيل Android 11 (المستوى 30 لحزمة تطوير البرامج (SDK)) والإصدارات الأحدث، يمكن للتطبيقات استخدام
android.provider.Settings.ACTION_WIFI_ADD_NETWORKS
النية في توجيه المستخدم خلال إضافة واحدة أو أكثر من الشبكات المحفوظة الجديدة، أو
إعدادات نقطة المرور. تعمل واجهة برمجة التطبيقات أيضًا كما هي لتعديل الإعدادات الحالية المحفوظة.
الإعدادات.
لحفظ إعداد شبكة أو نقطة مرور، عليك اتّباع الخطوات التالية:
أنشئ هدفًا
ACTION_WIFI_ADD_NETWORKS
.يمكنك إنشاء واحدة أو أكثر من الإعدادات باستخدام
WifiNetworkSuggestion.Builder
تجدر الإشارة إلى أنّه على الرغم من استخدامWifiNetworkSuggestion
، فإنّ Intent API هذه وليس مرتبطًا بواجهة برمجة تطبيقات الاقتراح.أنشئ قائمة بصفيفات قابلة للتضمين في الإعدادات وإرفاقها نية
EXTRA_WIFI_NETWORK_LIST
المزيد.التنفيذ
Activity.startActivityForResult()
، تمرير الهدف.الاستماع إلى النتيجة باستخدام
Activity.onActivityResult()
معاودة الاتصال.يمكن أن تكون قيمة
resultCode
واحدة مما يلي:Activity.RESULT_OK
: للإشارة إلى أنّ المستخدم قبل الشبكات المقترَحة وحفظها.Activity.RESULT_CANCELED
: الإشارة إلى أنّ المستخدم رفض الشبكات المقترَحة.
إذا كانت قيمة
resultCode
هيRESULT_OK
، ستحتوي البيانات فيIntent
على السمةEXTRA_WIFI_NETWORK_RESULT_LIST
إضافي، والذي يحتوي على صفيف من رموز النتائج التي تشير إلى ما إذا كان تم حفظ الإعدادات بنجاح. رموز النتائج المحتملة هي:ADD_WIFI_RESULT_SUCCESS
: تمت إضافة الإعداد أو تحديثه بنجاح.ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED
: يحدث الفشل عند محاولة إضافة إعداد، مثل حدوث أخطاء بسبب واجهة التكوين.ADD_WIFI_RESULT_ALREADY_EXISTS
: كان الإعداد المطلوب موجودًا من قبل، لذلك لم يكن هناك أي إجراء ضروري.
إذا تم الطلب بنجاح، تبدأ المنصة اتصالاً بأحد الشبكات المحفوظة حديثًا.
نموذج التعليمات البرمجية
يعرض نموذج الرمز البرمجي التالي كيفية حفظ شبكة أو نقطة مرور. التكوين.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
}
fun startOperation() {
val suggestions = ArrayList<WifiNetworkSuggestion>()
// WPA2 configuration
suggestions.add(
WifiNetworkSuggestion.Builder()
.setSsid("test111111")
.setWpa2Passphrase("test123456")
.build()
)
// Open configuration
suggestions.add(
WifiNetworkSuggestion.Builder()
.setSsid("test222222")
.build()
)
// Passpoint configuration
val config = PasspointConfiguration()
config.credential = Credential().apply {
realm = "realm.example.com"
simCredential = Credential.SimCredential().apply {
eapType = 18
imsi = "123456*"
}
}
config.homeSp = HomeSp().apply {
fqdn = "test1.example.com"
friendlyName = "Some Friendly Name"
}
suggestions.add(
WifiNetworkSuggestion.Builder()
.setPasspointConfig(config)
.build())
// Create intent
val bundle = Bundle()
bundle.putParcelableArrayList(EXTRA_WIFI_NETWORK_LIST, suggestions)
val intent = Intent(ACTION_WIFI_ADD_NETWORKS)
intent.putExtras(bundle)
// Launch intent
startActivityForResult(intent, 0)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == RESULT_OK) {
// user agreed to save configurations: still need to check individual results
if (data != null && data.hasExtra(EXTRA_WIFI_NETWORK_RESULT_LIST)) {
for (code in data.getIntegerArrayListExtra(EXTRA_WIFI_NETWORK_RESULT_LIST)) {
when (code) {
ADD_WIFI_RESULT_SUCCESS ->
... // Configuration saved or modified
ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED ->
... // Something went wrong - invalid configuration
ADD_WIFI_RESULT_ALREADY_EXISTS ->
... // Configuration existed (as-is) on device, nothing changed
else ->
... // Other errors
}
}
}
} else {
// User refused to save configurations
}
}
}