الاثنين، 1 يناير 2018

للوضع الليلي في التطبيق DayNight



في هذا البرنامج التعليمي ، سنناقش ونستخدم موضوع Android DayNight في تطبيقنا. إذا كان لديك تطبيق يحتوي على مواد للقراءة ، فإن استخدام الوضع الليلي مفيد وبسهولة للعينين.




Android released a new theme: Theme.AppCompat.DayNight with the support library 23.2.0.




أصدر Android مظهرًا جديدًا: Theme.AppCompat.DayNightمع مكتبة الدعم 23.2.0.




بفضل هذا الموضوع ، يمكننا الآن التبديل بين صيغ الضوء والظلام في طلبنا. يمكننا فعل ذلك يدويًا أو السماح لنظام Android باكتشاف وقت اليوم بشكلٍ ضمني من هاتفك.




هذا الموضوع يعزز قابلية قراءة التطبيق وسهولة استخدامه خلال الليل عن طريق استبدال الخلفية البيضاء المبهرجة بواجهة داكنة. لقد قامت العديد من تطبيقات القارئ بنشر هذا الموضوع بالفعل في تطبيقاتهم.




دعنا نبدأ بتطبيقنا من خلال إنشاء مشروع جديد لـ Android Studio مع نشاط فارغ.




إضافة المظهر إلى الأنماط. xml

دعونا استبدال الموضوع الحالي في طلبنا مع DayNight واحد.







______________________________________________________________________________


<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>



______________________________________________________________________________







لضبط موضوع DayNight في تطبيقنا ، نستخدم الطريقة: AppCompatDelegate.setDefaultNightMode()




فيما يلي الحجج المسموح بها في الأسلوب أعلاه.




MODE_NIGHT_YES - تمكن من الوضع الليلي يدويا.

MODE_NIGHT_NO - تعطيل الوضع الليلي يدويا.

MODE_NIGHT_FOLLOW_SYSTEM- يستخدم إعدادات النظام لتحديد الوقت من اليوم وتبديل NightMode وفقا لذلك. هذه هي الوسيطة الافتراضية.

MODE_NIGHT_AUTO- يحاول هذا اكتشاف الوقت تلقائيًا من واجهات برمجة التطبيقات لموقع الجهاز. إذا لم يتم منح إذن وقت التشغيل لخدمات الموقع ، فإنه يستخدم وقت النظام.

قم بإضافة التعليمة البرمجية التالية في onCreate()الأسلوب.




__________________________________________




@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); //For night mode theme

//AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); //For day mode theme

setContentView(R.layout.activity_main);

}




_________________________________________________________________________________




يجب دائمًا تعيين النسق قبل setContentViewاستدعاء الطريقة.




ما هو AppCompatDelegate؟

و AppCompatDelegateهي تمثل فئة مندوب التي يمكنك استخدامها لتقديم الدعم AppCompat لأي آخر.

دعونا نرى كيف تبدو شاشة نشاطنا مع وضع النهار والليلة تمكين الوضع واحدا تلو الآخر.

































يغير TextView لونه إلى اللون الأبيض في الوضع الليلي. هذا لأن TextView يحتوي ضمنيًا على النمط الافتراضي المسمى: ?attr/colorPrimaryوالذي يغير اللون استنادًا إلى مظهر التطبيق light / dark. إذا قمت بتعيين لون مخصص @color/redعلى TextView ، فلن يتغير بين أوضاع النهار / الليل.




لون نص شريط الأدوات في وضع اليوم أسود. كيفية ضبطه على الأبيض في styles.xmlنفسه؟
















<style name="AppTheme" parent="Theme.AppCompat.DayNight">

<!-- Customize your theme here. -->

<item name="colorPrimary">@color/colorPrimary</item>

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

<item name="colorAccent">@color/colorAccent</item>

<item name="android:textColorPrimary">@android:color/white</item>

<item name="android:textColorSecondary">@android:color/white</item>

</style>

لاسترداد نوع الوضع الليلي الحالي ، نستخدم الطريقة AppCompatDelegate.getDefaultNightMode()التي تُرجع عددًا صحيحًا لكل نوع من الأنواع التي تمت مناقشتها سابقًا ، على التوالي.




بعد أن حصلت على فكرة أساسية دعونا نجعل طلبا وهو ما يلي:




تخصيص الموارد ، الأنماط في أوضاع النهار / الليل.

Toggle DayNight theme from the UI

شاهد كيف تبدو أدوات واجهة المستخدم المتنوعة في الوضع الليلي.

Android Project Mode بنية المشروع

مشروع android theme daynight المثال




الروبوت DayNight الموضوع رمز المثال

رمز ملف فئة activity_main.xml موضح أدناه.







<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">







<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_margin="@android:dimen/app_icon_size"

android:text="Welcome to this tutorial."

android:textColor="@color/daynight_textColor"

android:textSize="18sp" />




<ImageView

android:id="@+id/imageView"

android:layout_width="250dp"

android:layout_height="250dp"

android:layout_centerInParent="true"

android:src="@drawable/placeholder" />







<TextView

android:id="@+id/txtNightMode"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/switchCompat"

android:layout_centerHorizontal="true"

android:paddingRight="8dp"

android:text="Night Mode"

android:textColor="@color/daynight_textColor" />







<android.support.v7.widget.SwitchCompat

android:id="@+id/switchCompat"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_marginBottom="@android:dimen/app_icon_size"

android:layout_toRightOf="@+id/txtNightMode"

android:checked="false"

android:textAppearance="?android:attr/textAppearanceMedium" />




<Button

android:id="@+id/button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_above="@+id/imageView"

android:layout_alignLeft="@+id/txtNightMode"

android:layout_alignStart="@+id/txtNightMode"

android:text="CLICK ME"

android:textColor="@color/daynight_textColor" />

</RelativeLayout>

لقد قمنا بتعيين لون نص مخصص و drawable على ImageView.

لتعيين ألوان ورسومات مختلفة لموضوعات النهار والليل ، نحتاج إلى إنشاء مجلدات منفصلة للموارد.

موارد سمة اليوم الموجودة في الدليل الافتراضي.

توجد موارد الموضوع الليلي في مجلدات ذات أسماء ملحقة بـ -night .

ومن هنا قمنا بإنشاء values-nightو drawable-nightالمجلدات في مشروعنا.

يجب أن يكون اسم الملف القابل للرسوم ، والألوان ، وأسماء الأنماط متماثلاً في كل من الدلائل الخاصة بالموارد التي ترغب في تبديلها في سمة DayNight.

إذا تم تعريف الأشياء أعلاه في واحد فقط من الدلائل ، سيتم استخدام نفس في مواضيع نهارية وليلية.

ويرد أدناه رمز الأنماط. xml في القيم ومجلدات القيم الليلية.







<resources>




<!-- Base application theme. -->

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

<!-- Customize your theme here. -->

<item name="colorPrimary">@color/colorPrimary</item>

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

<item name="colorAccent">@color/colorAccent</item>

<item name="android:textColorPrimary">@android:color/white</item>

</style>




<style name="MyDialog" parent="Theme.AppCompat.Light.Dialog.Alert"/>




<style name="MySwitch">

<item name="colorControlActivated">@color/switchColor</item>

</style>

</resources>




<resources>

<!-- Base application theme. values-night.xml -->

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

<!-- Customize your theme here. -->

<item name="colorPrimary">@color/orange</item>

<item name="colorPrimaryDark">@color/orangeDark</item>

<item name="colorAccent">@color/colorAccent</item>

<item name="android:textColorPrimary">@android:color/white</item>

</style>




<style name="MyDialog" parent="Theme.AppCompat.DayNight.Dialog.Alert"/>




<style name="MySwitch">

<item name="colorControlActivated">@color/switchColor</item>

</style>

</resources>

يتم استخدام الأنماط المحددة أعلاه لتعيين تخصيص موضوع DayNight القياسي.




يتم تعريف الأشياء الخاصة بـ colors.xml كما هو موضح أدناه.

وضع الليل ليلة الألوان الروبوت

colors.xml من مجلد قيم الليل




وضع daynight لون النهار الروبوت

colors.xml من مجلد القيم




MainActivity.javaيتم إعطاء رمز الفصل الدراسي أدناه.







package com.journaldev.daynightmode;




import android.content.Intent;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.app.AppCompatDelegate;

import android.support.v7.widget.SwitchCompat;

import android.view.View;

import android.widget.Button;

import android.widget.CompoundButton;




public class MainActivity extends AppCompatActivity {




@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if (InitApplication.getInstance().isNightModeEnabled()) {

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

} else {

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

}

setContentView(R.layout.activity_main);







SwitchCompat switchCompat = findViewById(R.id.switchCompat);

Button button = findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

new AlertDialog.Builder(MainActivity.this, R.style.MyDialog)

.setTitle("Title")

.setMessage("Message")

.show();

}

});




if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES)

switchCompat.setChecked(true);




switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked) {

InitApplication.getInstance().setIsNightModeEnabled(true);

Intent intent = getIntent();

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

finish();

startActivity(intent);




} else {

InitApplication.getInstance().setIsNightModeEnabled(false);

Intent intent = getIntent();

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

finish();

startActivity(intent);

}







}

});




}

}

في الكود أعلاه ، نستخدم التبديل للتبديل بين موضوعات الوضع الليلي والنهائي في طلبنا. نحفظ

الوضع الحالي في كائن SharedPreferences .




لماذا ا؟




يمكن تعيين موضوع النشاط مرة واحدة فقط. ومن ثم عندما يتم تبديل المفتاح ، نحتاج إلى حفظ الوضع الجديد في كائن SharedPreference. نستخدم نمط Singleton لنوع التطبيق. بهذه الطريقة يمكن استخدام نفس مثيل فئة التطبيق في جميع أنحاء التطبيق.




InitApplication.javaيتم إعطاء رمز الفصل الدراسي أدناه.







package com.journaldev.daynightmode;




import android.app.Application;

import android.content.SharedPreferences;

import android.preference.PreferenceManager;







public class InitApplication extends Application {

public static final String NIGHT_MODE = "NIGHT_MODE";

private boolean isNightModeEnabled = false;




private static InitApplication singleton = null;




public static InitApplication getInstance() {




if(singleton == null)

{

singleton = new InitApplication();

}

return singleton;

}




@Override

public void onCreate() {

super.onCreate();

singleton = this;

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);

this.isNightModeEnabled = mPrefs.getBoolean(NIGHT_MODE, false);

}




public boolean isNightModeEnabled() {

return isNightModeEnabled;

}




public void setIsNightModeEnabled(boolean isNightModeEnabled) {

this.isNightModeEnabled = isNightModeEnabled;




SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);

SharedPreferences.Editor editor = mPrefs.edit();

editor.putBoolean(NIGHT_MODE, isNightModeEnabled);

editor.apply();

}

}

إنه هنا حيث نقوم بتحديث واسترجاع نوع الوضع الليلي من التفضيلات المشتركة.




وضع التشغيل في الوضع الليلي في Android





















السبت، 21 أكتوبر 2017

التطبيق البيان App Manifest

التطبيق البيان App Manifest

في هذه الوثيقة
بنية ملف البيان
اتفاقيات الملفات
ميزات الملف
مرشحات النوايا
أيقونات، أيضا، لابيلز
أذونات
المكتبات
يجب أن يكون كل تطبيق ملف AndroidManifest.xml (مع هذا الاسم بالتحديد) في الدليل الجذر. يوفر ملف البيان معلومات أساسية حول التطبيق الخاص بك لنظام أندرويد، والذي يجب أن يكون النظام قبل أن تتمكن من تشغيل أي من التعليمات البرمجية التطبيق.

من بين أمور أخرى، ملف البيان يفعل ما يلي:


وهو يسمي حزمة جافا للتطبيق. اسم الحزمة بمثابة معرف فريد للتطبيق.

وهو يصف مكونات التطبيق، التي تشمل الأنشطة والخدمات وأجهزة استقبال البث ومزودي المحتوى الذين يؤلفون التطبيق. كما أنها تسمي الفئات التي تنفذ كل من المكونات وتنشر قدراتها، مثل الرسائل Intent التي يمكن التعامل معها. هذه الإعلانات إبلاغ نظام أندرويد من المكونات والظروف التي يمكن إطلاقها.
يحدد العمليات التي تستضيف مكونات التطبيق.
ويعلن الأذونات التي يجب أن يكون التطبيق من أجل الوصول إلى الأجزاء المحمية من أبي والتفاعل مع التطبيقات الأخرى. كما أنه يعلن الأذونات التي يطلبها الآخرون من أجل التفاعل مع مكونات التطبيق.
وهو يسرد فئات Instrumentation التي توفر التنميط وغيرها من المعلومات كما يعمل التطبيق. هذه الإعلانات موجودة في البيان فقط أثناء تطوير التطبيق وإزالته قبل نشر التطبيق.
فإنه يعلن الحد الأدنى من مستوى أبي الروبوت أن التطبيق يتطلب.
وهو يسرد المكتبات التي يجب أن يتم ربط التطبيق ضد.
ملاحظة : عند إعداد تطبيق أندرويد للتشغيل على أجهزة كروميبوك، هناك بعض القيود الهامة على الأجهزة والبرامج التي يجب أخذها في الاعتبار. يمكنك الاطلاع على مستند التوافق بين التطبيقات في متصفح كروميبوك للحصول على مزيد من المعلومات.

بنية ملف البيان

يعرض مقتطف الشفرة أدناه البنية العامة لملف البيان وكل عنصر يمكن أن يحتوي عليه. يتم توثيق كل عنصر، جنبا إلى جنب مع جميع سماته، بشكل كامل في ملف منفصل.

تلميح : لعرض معلومات تفصيلية حول أي من العناصر المذكورة في نص هذا المستند، ما عليك سوى النقر على اسم العنصر.


في ما يلي مثال لملف البيان:

<?xml version="1.0" encoding="utf-8"?>
<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>
</manifest>

تحتوي القائمة التالية على كافة العناصر التي يمكن أن تظهر في ملف البيان، حسب الترتيب الأبجدي:


<action>

<activity>
<activity-alias>
<application>
<category>
<data>
<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>
ملاحظة : هذه هي العناصر القانونية الوحيدة - لا يمكنك إضافة عناصرك أو سماتك.

اتفاقيات الملفات

يصف هذا القسم الاتفاقيات والقواعد التي تنطبق بشكل عام على كافة العناصر والسمات في ملف البيان.

عناصر

لا يلزم سوى العنصرين <manifest> و <application> . يجب أن يكون كل منهم حاضرا ويمكن أن يحدث مرة واحدة فقط. معظم العناصر الأخرى يمكن أن تحدث عدة مرات أو لا على الإطلاق. ومع ذلك، يجب أن يكون بعض منها على الأقل قبل أن يصبح ملف البيان مفيدا.
إذا كان العنصر يحتوي على أي شيء على الإطلاق، فإنه يحتوي على عناصر أخرى. يتم تعيين كل القيم من خلال سمات، وليس كبيانات أحرف داخل عنصر.

وعادة ما لا يتم ترتيب العناصر في نفس المستوى. على سبيل المثال، يمكن خلط العناصر <activity> و <provider> و <service> في أي تسلسل. هناك استثناءان أساسيان لهذه القاعدة:


يجب أن يتبع عنصر <activity-alias> <activity> وهو اسم مستعار.

يجب أن يكون العنصر <manifest> العنصر الأخير داخل العنصر <manifest> . وبعبارة أخرى، يجب أن تظهر علامة الإغلاق </application> أبليكاتيون مباشرة قبل علامة الإغلاق </manifest> .
سمات
بالمعنى الرسمي، جميع الصفات اختيارية. ومع ذلك، هناك بعض السمات التي يجب تحديدها بحيث عنصر يمكن أن يحقق الغرض منه. استخدم الوثائق كدليل. بالنسبة للخصائص الاختيارية حقا، فإنه يشير إلى القيمة الافتراضية أو يذكر ما يحدث في حالة عدم وجود مواصفات.
باستثناء بعض سمات عنصر <manifest> الجذر، تبدأ جميع أسماء الخصائص مع بادئة android: :. على سبيل المثال، android:alwaysRetainTaskState . ولأن البادئة عالمية، فإن الوثائق تحذفها عادة عند الإشارة إلى السمات بالاسم.

إعلان أسماء الصفوف

وتتطابق عناصر كثيرة مع عناصر جافا، بما في ذلك عناصر التطبيق نفسه (العنصر <application> ) ومكوناته الرئيسية: الأنشطة ( <activity> )، والخدمات ( <service> )، وأجهزة البث الإذاعية ( <receiver> ) ( <provider> ).
إذا قمت بتعريف فئة فرعية، كما كنت دائما تقريبا لفئات المكون ( Activity ، Service ، BroadcastReceiver ، و ContentProvider )، يتم الإعلان عن الفئة الفرعية من خلال سمة name . يجب أن يتضمن الاسم تعيين الحزمة بالكامل. على سبيل المثال، قد يتم الإعلان عن فئة فرعية Service كما يلي:


<manifest . . . >
    <application . . . >
        <service android:name="com.example.project.SecretService" . . . >
            . . .
        </service>
        . . .
    </application>
</manifest>
 ومع ذلك، إذا كان الحرف الأول من السلسلة هو فترة، يتم إلحاق اسم حزمة التطبيق (كما هو محدد بواسطة سمة package العنصر <manifest> ) إلى السلسلة. التخصيص التالي هو نفسه كما هو موضح أعلاه::
<manifest package="com.example.project" . . . >
    <application . . . >
        <service android:name=".SecretService" . . . >
            . . .
        </service>
        . . .
    </application>
</manifest>
 عند بدء تشغيل مكون، يقوم نظام أندرويد بإنشاء مثيل من الفئة الفرعية المسماة. إذا لم يتم تحديد فئة فرعية، فإنه ينشئ مثيل فئة الأساس.

قيم متعددة
إذا كان يمكن تحديد أكثر من قيمة واحدة، يتم تكرار العنصر دائما تقريبا، بدلا من إدراج قيم متعددة ضمن عنصر واحد. على سبيل المثال، يمكن لمرشح النوايا إدراج عدة إجراءات::
<intent-filter . . . >
    <action android:name="android.intent.action.EDIT" />
    <action android:name="android.intent.action.INSERT" />
    <action android:name="android.intent.action.DELETE" />
    . . .</intent-filter>
 قيم الموارد
تحتوي بعض السمات على قيم يمكن عرضها للمستخدمين، مثل تصنيف ورمز لنشاط ما. يجب أن تكون قيم هذه الصفات مترجمة ومحددة من مورد أو موضوع. يتم التعبير عن قيم الموارد بالتنسيق التالي:
@[ package :] type / name

يمكنك حذف اسم الحزمة إذا كان المورد في نفس الحزمة مثل التطبيق. النوع هو نوع من الموارد، مثل السلسلة أو دراوابل ، والاسم هو الاسم الذي يحدد المورد المحدد. هنا مثال::
<activity android:icon="@drawable/smallPic" . . . >


يتم التعبير عن القيم من موضوع مماثل، ولكن مع الأولية ? بدلا من @ :


?[ package :] type / name


ملاحظة: يجب أن تكون قيمة حزمة المورد أو الموضوع إما "أندرويد" أو اسم حزمة التطبيق.


قيم السلسلة

إذا كانت قيمة السمة عبارة عن سلسلة، فيجب استخدام عناصر مائلة عكسية مزدوجة ( \\ ) للهروب من الأحرف، مثل \\n للحصول على خط جديد أو \\uxxxx ونيكود.
ميزات الملف
تصف الأقسام التالية الطريقة التي تنعكس بها بعض ميزات أندرويد في ملف البيان.

مرشحات النوايا

ويتم تنشيط المكونات الأساسية للتطبيق، مثل أنشطته وخدماته ومستقبلات البث، بواسطة النوايا . القصد هو مجموعة من المعلومات (كائن Intent ) تصف الإجراء المطلوب، بما في ذلك البيانات التي يجب اتخاذ إجراء بشأنها، وفئة المكون الذي يجب تنفيذ الإجراء، وتعليمات أخرى ذات صلة. نظام الروبوت يحدد مكون مناسب التي يمكن أن تستجيب إلى القصد، تطلق مثيل جديد من المكون إذا كان هناك حاجة إلى واحد، ويمر عليه الكائن Intent .

وتعلن المكونات عن أنواع النوايا التي يمكنها الرد عليها من خلال فلاتر النوايا . نظرا لأن نظام أندرويد يجب أن يتعلم النوايا التي يمكن للمكون التعامل معها قبل إطلاق المكون، يتم تحديد عوامل تصفية النوايا في البيان <intent-filter> . يمكن أن يكون للمكون أي عدد من الفلاتر، كل واحد يصف قدرة مختلفة.


النية التي تسمي بشكل صريح مكون مستهدف ينشط هذا المكون، وبالتالي فإن الفلتر لا يلعب دورا. النية التي لا تحدد الهدف بالاسم يمكن تنشيط عنصر إلا إذا كان يمكن أن تمر من خلال واحدة من مرشحات المكون.


للحصول على معلومات حول كيفية اختبار الكائنات Intent ضد مرشحات القصد، راجع وثيقة الفلاتر ونوايا الفلاتر.


أيقونات، أيضا، لابيلز

يحتوي عدد من العناصر على سمات icon label لرمز صغير وتسمية نص يمكن عرضها للمستخدمين. بعض أيضا سمة description لمدة أطول، النص التفسيرية التي يمكن أيضا أن تظهر على الشاشة. على سبيل المثال، يحتوي العنصر <permission> على كل هذه السمات الثلاث بحيث عندما يطلب من المستخدم ما إذا كان سيتم منح الإذن لتطبيق طلب ذلك، فسيكون الرمز الذي يمثل الإذن واسم الإذن ووصفا ما ينطوي عليه كلها قدمت للمستخدم.

في كل حالة، يصبح الرمز والتسمية المحددين في عنصر يحتوي على icon الافتراضي وإعدادات label لكافة العناصر الفرعية للحاوية. وبالتالي، فإن الرمز والتسمية المحددين في عنصر <application> هما الرمز الافتراضي والتسمية لكل مكون من مكونات التطبيق. وبالمثل، فإن الرمز والتصنيف اللذين تم تعيينهما لمكون، مثل عنصر <activity> ، هما الإعدادان الافتراضيان لكل عنصر من عناصر <intent-filter> . إذا قام عنصر <application> بتعيين تصنيف، ولكن لم يتم إجراء أي نشاط ومرشح القصد، يتم التعامل مع تصنيف التطبيق على أنه التصنيف لكل من النشاط ومرشح القصد.


يمثل الرمز والتسمية اللذين تم تعيينهما لمرشح القصد عنصرا عندما يتم تقديم المكون للمستخدم ويؤدي الوظيفة التي يتم الإعلان عنها بواسطة الفلتر. على سبيل المثال، مرشح مع إعدادات android.intent.category.LAUNCHER و android.intent.category.LAUNCHER يعلن عن نشاط واحد الذي يبدأ تطبيق. وهذا هو، باعتبارها واحدة التي ينبغي عرضها في قاذفة التطبيق. يتم عرض الرمز والتسمية التي تم تعيينها في عامل التصفية في المشغل.


أذونات

الإذن هو تقييد يحد من الوصول إلى جزء من التعليمات البرمجية أو إلى البيانات الموجودة على الجهاز. يتم فرض قيود لحماية البيانات الهامة والرمز التي يمكن أن يساء استخدامها لتشويه أو تلف تجربة المستخدم.

يتم تحديد كل إذن بواسطة تصنيف فريد. غالبا ما يشير التسمية إلى الإجراء المقيد. إليك بعض الأذونات التي تم تعريفها بواسطة أندرويد:


android.permission.CALL_EMERGENCY_NUMBERS

android.permission.READ_OWNER_DATA
android.permission.SET_WALLPAPER
android.permission.DEVICE_POWER
ميزة يمكن أن تكون محمية من قبل إذن واحد فقط.

إذا كان التطبيق يحتاج إلى الوصول إلى ميزة محمية بواسطة إذن، يجب أن تعلن أنه يتطلب الإذن باستخدام عنصر <uses-permission> في البيان. عند تثبيت التطبيق على الجهاز، يحدد المثبت ما إذا كان سيتم منح الإذن المطلوب عن طريق التحقق من السلطات التي وقعت على شهادات التطبيق، وفي بعض الحالات، يطلب من المستخدم. إذا تم منح الإذن، التطبيق قادر على استخدام الميزات المحمية. إن لم يكن، محاولاته للوصول إلى تلك الميزات تفشل دون أي إخطار للمستخدم.


تطبيق يمكن أيضا حماية مكوناتها الخاصة مع الأذونات. يمكن أن تستخدم أي من الأذونات التي تم تعريفها من قبل الروبوت، كما هو موضح في android.Manifest.permission ، أو أعلن عن طريق تطبيقات أخرى. فإنه يمكن أيضا تعريف الخاصة بها. يتم الإعلان عن إذن جديد باستخدام العنصر <permission> . على سبيل المثال، يمكن حماية النشاط على النحو التالي:





<manifest . . . >
    <permission android:name="com.example.project.DEBIT_ACCT" . . . />
    <uses-permission android:name="com.example.project.DEBIT_ACCT" />
    . . .
    <application . . .>
        <activity android:name="com.example.project.FreneticActivity"
                  android:permission="com.example.project.DEBIT_ACCT"
                  . . . >
            . . .
        </activity>
    </application>
</manifest>




لاحظ أنه في هذا المثال، لا يتم DEBIT_ACCT إذن DEBIT_ACCT فقط مع العنصر <permission> DEBIT_ACCT <permission> ، بل يطلب استخدامه أيضا باستخدام عنصر <permission> DEBIT_ACCT <uses-permission> . يجب أن تطلب استخدامه من أجل المكونات الأخرى للتطبيق لإطلاق النشاط المحمي، على الرغم من أن الحماية تفرض من قبل التطبيق نفسه.


إذا تم تعيين السمة permission في نفس المثال الموضح أعلاه إلى إذن تم الإعلان عنه في مكان آخر، مثل android.permission.CALL_EMERGENCY_NUMBERS ، فلن يكون من الضروري الإعلان عنه مرة أخرى باستخدام عنصر <permission> . ومع ذلك، سيظل من الضروري طلب استخدامه باستخدام <uses-permission> .


يحدد العنصر <permission-tree> مساحة اسم لمجموعة من الأذونات التي تم تعريفها في التعليمات البرمجية، ويحدد <permission-group> غروب <permission-group> تصنيفا لمجموعة من الأذونات، سواء تلك المعلنة في البيان باستخدام عناصر <permission> أو تلك أعلن في أماكن أخرى. وهذا يؤثر فقط على كيفية تجميع الأذونات عند تقديمها للمستخدم. لا يحدد العنصر <permission-group> الأذونات التي تنتمي إلى المجموعة، ولكنه يعطي المجموعة اسما. يمكنك وضع إذن في المجموعة عن طريق تعيين اسم المجموعة إلى سمة permissionGroup <permission> العنصر.


المكتبات

ويرتبط كل تطبيق ضد مكتبة الروبوت الافتراضية، والذي يتضمن الحزم الأساسية لبناء التطبيقات (مع فئات مشتركة مثل النشاط، خدمة، نية، عرض، زر، التطبيق، و كونتينتبروفيدر).

ومع ذلك، توجد بعض الحزم في المكتبات الخاصة بها. إذا كان التطبيق الخاص بك يستخدم التعليمات البرمجية من أي من هذه الحزم، يجب أن يطلب صراحة أن تكون مرتبطة ضدهم. يجب أن يحتوي البيان على عنصر <uses-library> منفصل لتسمية كل من المكتبات. يمكنك العثور على اسم المكتبة في وثائق الحزمة.





<العمل>

بناء الجملة:

<action>

SYNTAX:
<action android:name="string" />


الواردة في:

<intent-filter>
وصف:
لإضافة إجراء إلى عامل تصفية نية. يجب أن يحتوي عنصر <intent-filter> عنصر <intent-filter> واحد أو أكثر. في حالة عدم وجود عناصر <action> في عامل تصفية نية، لا يقبل الفلتر أية عناصر Intent . انظر النوايا والنوايا مرشحات للحصول على تفاصيل عن مرشحات القصد ودور مواصفات العمل داخل مرشح.
الصفات:
android:name
اسم الإجراء. يتم تعريف بعض الإجراءات القياسية في فئة Intent كما ACTION_ string . لتعيين أحد هذه الإجراءات لهذه السمة، قم مسبقا بإرسال " android.intent.action. " إلى string التي تتبع ACTION_ . على سبيل المثال، بالنسبة ل ACTION_MAIN ، استخدم " android.intent.action.MAIN " و ACTION_WEB_SEARCH ، استخدم " android.intent.action.WEB_SEARCH ".
بالنسبة للإجراءات التي تحددها، من الأفضل استخدام اسم حزمة التطبيق كبادئة لضمان التفرد. على سبيل المثال، قد يتم تحديد إجراء TRANSMOGRIFY كما يلي:


<action android:name="com.example.project.TRANSMOGRIFY" />

قدم في:
أبي ليفيل 1
أنظر أيضا:
<intent-filter>


-*-*-********************--------------------***

<النشاط>
بناء الجملة:


<activity>

SYNTAX:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    . . .</activity>



الواردة في:

<application>
يمكن أن تحتوي على:
<intent-filter> 
<meta-data>
وصف:
يعلن نشاطا (فئة فرعية للأنشطة) يقوم بتنفيذ جزء من واجهة المستخدم البصرية للتطبيق. يجب أن تكون جميع الأنشطة ممثلة بعناصر <activity> في ملف البيان. أي أن لم يتم الإعلان هناك لن ينظر إليها من قبل النظام ولن يتم تشغيلها.
الصفات:
android:allowEmbedded
تشير إلى أنه يمكن إطلاق النشاط باعتباره الطفل جزءا لا يتجزأ من نشاط آخر. ولا سيما في الحالة التي يعيش فيها الطفل في وعاء مثل العرض المملوك لنشاط آخر. على سبيل المثال، يجب أن تعلن الأنشطة التي يتم استخدامها للإشعارات المخصصة للارتداء هذا الأمر بحيث يمكن لل وير عرض النشاط في تدفق السياق، والذي يتواجد في عملية أخرى.
القيمة الافتراضية لهذه السمة هي false .

android:allowTaskReparenting

ما إذا كان النشاط يمكن أن ينتقل من المهمة التي بدأت إلى المهمة التي لديها تقارب عندما يتم جلب هذه المهمة المقبل إلى الأمام - " true " إذا كان يمكن أن تتحرك، و " false " إذا كان يجب أن تبقى مع المهمة حيث بدأت.
إذا لم يتم تعيين هذه السمة، يتم تطبيق القيمة التي تم تعيينها بواسطة السمة allowTaskReparenting المقابلة allowTaskReparenting <application> allowTaskReparenting <application> على النشاط. القيمة الافتراضية هي " false ".

عادة عند بدء النشاط، فإنه يرتبط بمهمة النشاط الذي بدأ عليه ويبقى هناك طوال حياته. يمكنك استخدام هذه السمة لإجبارها على إعادة التكافؤ إلى المهمة التي لديها تقارب عندما لم تعد مهمتها الحالية عرض. عادة، انها تستخدم لتسبب أنشطة التطبيق للانتقال إلى المهمة الرئيسية المرتبطة بهذا التطبيق.


على سبيل المثال، إذا كانت رسالة البريد الإلكتروني تحتوي على رابط إلى صفحة ويب، يؤدي النقر على الرابط إلى عرض نشاط يمكنه عرض الصفحة. يتم تعريف هذا النشاط من خلال تطبيق المتصفح، ولكن يتم إطلاقه كجزء من مهمة البريد الإلكتروني. إذا كان ريفيرانتد إلى مهمة المتصفح، وسوف يظهر عندما يأتي المتصفح المقبل إلى الأمام، وسوف تكون غائبة عندما تأتي مهمة البريد الإلكتروني مرة أخرى إلى الأمام.


يتم تعريف تقارب النشاط بواسطة السمة taskAffinity . يتم تحديد تقارب مهمة من خلال قراءة تقارب نشاطها الجذر. لذلك، بحكم التعريف، نشاط الجذر هو دائما في مهمة بنفس التقارب. منذ الأنشطة مع " singleTask " أو " singleInstance " وسائط إطلاق يمكن أن يكون إلا في جذر مهمة، وإعادة الأبوة والأمومة يقتصر على وسائط " standard " و " singleTop ". (انظر أيضا السمة launchMode .)


android:alwaysRetainTaskState

ما إذا كان سيتم الحفاظ على حالة المهمة التي يتم فيها النشاط دائما في النظام - " true " إذا كان سيكون، و " false " إذا كان النظام يسمح لإعادة تعيين المهمة إلى حالتها الأولية في حالات معينة. القيمة الافتراضية هي " false ". هذه السمة ذات معنى فقط للنشاط الجذر للمهمة؛ يتم تجاهلها لجميع الأنشطة الأخرى.
عادة، يقوم النظام بمسح مهمة (يزيل جميع الأنشطة من المكدس فوق النشاط الجذر) في حالات معينة عندما يقوم المستخدم بإعادة تحديد هذه المهمة من الشاشة الرئيسية. عادة، يتم ذلك إذا لم يقم المستخدم بزيارة المهمة لفترة معينة من الوقت، مثل 30 دقيقة.

ومع ذلك، عندما تكون هذه السمة " true "، سيعود المستخدمون دائما إلى المهمة في آخر حالة، بغض النظر عن كيفية وصولهم إليها. هذا مفيد، على سبيل المثال، في تطبيق مثل متصفح الويب حيث هناك الكثير من الدولة (مثل علامات التبويب المفتوحة متعددة) أن المستخدمين لا ترغب في فقدان.


android:autoRemoveFromRecents

ما إذا كانت المهام التي تم إطلاقها بواسطة أنشطة مع هذه السمة لا تزال في شاشة النظرة العامة حتى يتم الانتهاء من آخر نشاط في المهمة. إذا كان true ، تتم إزالة المهمة تلقائيا من شاشة النظرة العامة. يؤدي هذا إلى تجاوز استخدام المتصل ل FLAG_ACTIVITY_RETAIN_IN_RECENTS . يجب أن تكون قيمة منطقية، إما " true " أو " false ".
android:banner
مورد قابل للرسم يوفر لافتة رسومية موسعة للبند المرتبط بها. استخدم علامة <activity> لتزويد بانر افتراضي لنشاط معين، أو باستخدام علامة <application> لتوفير بانر لجميع أنشطة التطبيق.
يستخدم النظام لافتة لتمثيل أحد التطبيقات في شاشة أندرويد تف الرئيسية. نظرا لأنه يتم عرض البانر فقط في الشاشة الرئيسية، يجب أن يتم تحديده فقط من خلال التطبيقات التي لها نشاط يتعامل مع القصد من CATEGORY_LEANBACK_LAUNCHER .

يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على الصورة (على سبيل المثال "@drawable/banner" ). لا يوجد لافتة افتراضية.


يمكنك الاطلاع على لافتات في أنماط واجهة المستخدم لدليل تصميم التلفزيون، وتوفير بانر للشاشة الرئيسية في الخطوات الأولى مع تطبيقات التلفزيون للحصول على مزيد من المعلومات.


android:clearTaskOnLaunch

ما إذا كان سيتم إزالة جميع الأنشطة من المهمة، باستثناء نشاط الجذر، كلما أعيد إطلاقها من الشاشة الرئيسية - " true " إذا تم تجريد المهمة دائما إلى نشاطها الجذر، و " false " إن لم يكن . القيمة الافتراضية هي " false ". هذه السمة ذات معنى فقط للأنشطة التي تبدأ مهمة جديدة (النشاط الجذر)؛ يتم تجاهلها لجميع الأنشطة الأخرى في المهمة.
عندما تكون القيمة " true "، في كل مرة يبدأ فيها المستخدمون المهمة مرة أخرى، يتم إحضارهم إلى نشاطها الجذر بغض النظر عما كانوا يقومون به أخيرا في المهمة وبغض النظر عما إذا كانوا قد استخدموا زر العودة أو الصفحة الرئيسية لتركها. عندما تكون القيمة " alwaysRetainTaskState "، قد يتم مسح المهمة من الأنشطة في بعض الحالات (راجع سمة alwaysRetainTaskState )، ولكن ليس دائما.

لنفترض، على سبيل المثال، أن شخصا ما تطلق النشاط P من الشاشة الرئيسية، ومن هناك يذهب إلى النشاط Q. المستخدم التالي يضغط الرئيسية ، ومن ثم يعود إلى النشاط P. عادة، فإن المستخدم يرى النشاط س، لأن هذا هو ما هم وكان آخر القيام به في مهمة P. ومع ذلك، إذا P تعيين هذه العلامة إلى " true "، تمت إزالة كافة الأنشطة على رأسها (Q في هذه الحالة) عندما ضغط المستخدم الصفحة الرئيسية والمهمة ذهبت إلى الخلفية. لذلك يرى المستخدم P فقط عند العودة إلى المهمة.


إذا كانت هذه السمة و allowTaskReparenting على حد سواء " true "، يتم نقل أي الأنشطة التي يمكن إعادة التكافؤ إلى المهمة التي تشترك في تقارب مع؛ ثم يتم إسقاط الأنشطة المتبقية، كما هو موضح أعلاه.


android:colorMode

يطلب من النشاط ليتم عرضها في وضع التدرج اللوني واسعة على الأجهزة المتوافقة. في وضع التدرج اللوني الواسع، يمكن عرض نافذة خارج سلسلة SRGB لعرض ألوان أكثر حيوية. إذا كان الجهاز لا يدعم عرض التدرج اللوني واسعة، هذه السمة ليس له أي تأثير. لمزيد من المعلومات حول العرض في وضع الألوان الواسع، راجع تحسين الرسومات باستخدام محتوى اللون الواسع .

android:configChanges

يسرد تغييرات التكوين التي سيتناول النشاط نفسه. عند حدوث تغيير في التكوين عند وقت التشغيل، يتم إيقاف النشاط وإعادة تشغيله بشكل افتراضي، ولكن سيؤدي تحديد تكوين مع هذه السمة إلى منع إعادة تشغيل النشاط. بدلا من ذلك، لا يزال النشاط قيد التشغيل onConfigurationChanged() أسلوب onConfigurationChanged() .
ملاحظة: يجب تجنب استخدام هذه السمة واستخدامها كملجأ أخير فقط. يرجى قراءة معالجة وقت التشغيل التغييرات للحصول على مزيد من المعلومات حول كيفية التعامل مع إعادة تشغيل بشكل صحيح بسبب تغيير التكوين.

أي أو كل السلاسل التالية هي قيم صالحة لهذه السمة. يتم فصل القيم المتعددة بواسطة ' | '- على سبيل المثال، " locale|navigation|orientation ".


القيمة وصف

" density " تغيرت كثافة العرض - قد يكون المستخدم قد حدد مقياس عرض مختلف، أو قد يكون عرض مختلف نشطا الآن.
تمت إضافته في مستوى واجهة برمجة التطبيقات 17 .
" fontScale " تغير عامل تحجيم الخط - اختار المستخدم حجم خط عالمي جديد.
" keyboard " تم تغيير نوع لوحة المفاتيح - على سبيل المثال، قام المستخدم بتوصيل لوحة مفاتيح خارجية.
" keyboardHidden " وقد تغيرت إمكانية الوصول لوحة المفاتيح - على سبيل المثال، قد كشف المستخدم لوحة المفاتيح الأجهزة.
" layoutDirection " لقد تغير اتجاه التخطيط - على سبيل المثال، من اليسار إلى اليمين (لتر) من اليمين إلى اليسار (رتل).
تمت إضافته في مستوى واجهة برمجة التطبيقات 17 .
" locale " تم تغيير اللغة - المستخدم قد اختار لغة جديدة يجب أن يتم عرض النص في.
" mcc " تم تغيير رمز البلد المحمول إمسي (مسك) - تم الكشف عن بطاقة سيم وتحديثها.
" mnc " تم تغيير رمز الشبكة المتنقلة إمسي (منك) - تم الكشف عن بطاقة سيم وتحديثها.
" navigation " تم تغيير نوع التنقل (كرة التتبع / دباد). (وهذا لا ينبغي أن يحدث عادة.)
" orientation " تم تغيير اتجاه الشاشة - المستخدم قد استدارة الجهاز.
ملاحظة: إذا كان تطبيقك يستهدف أندرويد 3.2 (مستوى واجهة برمجة التطبيقات 13) أو أعلى، فيجب عليك أيضا الإعلان عن تهيئة "screenSize" ، لأنه يتغير أيضا عندما يتحول الجهاز بين الاتجاهات الرأسية والمناظر الطبيعية.

" screenLayout " تم تغيير تخطيط الشاشة - قد يكون عرض مختلف الآن نشطا.

" screenSize " تم تغيير حجم الشاشة المتاحة حاليا.
وهذا يمثل تغييرا في الحجم المتاح حاليا، نسبة إلى نسبة العرض إلى الارتفاع الحالية، لذلك سوف تتغير عندما يقوم المستخدم بالتبديل بين المناظر الطبيعية والعرضية.

تمت إضافتها في مستوى واجهة برمجة التطبيقات 13 .

" smallestScreenSize " تم تغيير حجم الشاشة الفعلية.
وهذا يمثل تغييرا في حجم بغض النظر عن التوجه، لذلك سوف تتغير فقط عندما تغير حجم الشاشة الفعلية الفعلية مثل التحول إلى شاشة خارجية. يتطابق تغيير هذا التكوين مع تغيير في تكوين أصغر حجم .

تمت إضافتها في مستوى واجهة برمجة التطبيقات 13 .

" touchscreen " تم تغيير شاشة اللمس. (وهذا لا ينبغي أن يحدث عادة.)
" uiMode " وقد تغير وضع واجهة المستخدم - المستخدم قد وضعت الجهاز في مكتب أو سيارة قفص الاتهام، أو تغير الوضع الليلي. لمزيد من المعلومات حول أوضاع واجهة المستخدم المختلفة، راجع UiModeManager .
تمت إضافته في المستوى أبي 8 .
كل هذه التغييرات التكوين يمكن أن تؤثر على قيم الموارد التي ينظر إليها التطبيق. لذلك، عند onConfigurationChanged() ، سيكون من الضروري عموما لاسترداد جميع الموارد مرة أخرى (بما في ذلك عرض تخطيطات، دراوابلز، وهلم جرا) للتعامل مع التغيير بشكل صحيح.
ValueDescription
"density"The display density has changed — the user might have specified a different display scale, or a different display might now be active.
Added in API level 17.
"fontScale"The font scaling factor has changed — the user has selected a new global font size.
"keyboard"The keyboard type has changed — for example, the user has plugged in an external keyboard.
"keyboardHidden"The keyboard accessibility has changed — for example, the user has revealed the hardware keyboard.
"layoutDirection"The layout direction has changed — for example, changing from left-to-right (LTR) to right-to-left (RTL).
Added in API level 17.
"locale"The locale has changed — the user has selected a new language that text should be displayed in.
"mcc"The IMSI mobile country code (MCC) has changed — a SIM has been detected and updated the MCC.
"mnc"The IMSI mobile network code (MNC) has changed — a SIM has been detected and updated the MNC.
"navigation"The navigation type (trackball/dpad) has changed. (This should never normally happen.)
"orientation"The screen orientation has changed — the user has rotated the device.
Note: If your application targets Android 3.2 (API level 13) or higher, then you should also declare the"screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
"screenLayout"The screen layout has changed — a different display might now be active.
"screenSize"The current available screen size has changed.
This represents a change in the currently available size, relative to the current aspect ratio, so will change when the user switches between landscape and portrait.
Added in API level 13.
"smallestScreenSize"The physical screen size has changed.
This represents a change in size regardless of orientation, so will only change when the actual physical screen size has changed such as switching to an external display. A change to this configuration corresponds to a change in the smallestWidth configuration.
Added in API level 13.
"touchscreen"The touchscreen has changed. (This should never normally happen.)
"uiMode"The user interface mode has changed — the user has placed the device into a desk or car dock, or the night mode has changed. For more information about the different UI modes, see UiModeManager.
Added in API level 8.
android:directBootAware
ما إذا كان النشاط هو التمهيد المباشر علم ؛ وهذا هو، ما إذا كان أو لا يمكن تشغيل قبل المستخدم يفتح الجهاز.

ملاحظة: أثناء التمهيد المباشر ، نشاط في التطبيق الخاص بك يمكن الوصول فقط إلى البيانات التي يتم تخزينها في الجهاز المحمية التخزين.


القيمة الافتراضية هي "false" .


android:documentLaunchMode

يحدد كيفية إضافة مثيل جديد للنشاط إلى مهمة في كل مرة يتم فيها تشغيله. تسمح هذه الخاصية للمستخدم بأن يكون هناك مستندات متعددة من نفس التطبيق تظهر في شاشة النظرة العامة .
تحتوي هذه السمة على أربع قيم تنتج التأثيرات التالية عندما يفتح المستخدم مستندا مع التطبيق:

القيمة وصف

" intoExisting " يبحث النظام عن مهمة تتطابق مع كومبوننتنام و نيت البيانات الأساسية مع نية الإطلاق. إذا وجد النظام مثل هذه المهمة، يقوم النظام بمسح المهمة، وإعادة تشغيل مع النشاط الجذر تلقي مكالمة إلى onNewIntent(android.content.Intent) . إذا لم يجد النظام مثل هذه المهمة، يقوم النظام بإنشاء مهمة جديدة.
" always " يؤدي النشاط إلى إنشاء مهمة جديدة للوثيقة، حتى إذا تم فتح المستند بالفعل. هذا هو نفس إعداد كل من FLAG_ACTIVITY_NEW_DOCUMENT و FLAG_ACTIVITY_MULTIPLE_TASK الأعلام.
" none " لا يؤدي النشاط إلى إنشاء مهمة جديدة للنشاط. هذه هي القيمة الافتراضية، التي تنشئ مهمة جديدة فقط عندما يتم تعيين FLAG_ACTIVITY_NEW_TASK . وتعالج شاشة النظرة العامة النشاط كما هو بشكل افتراضي: فإنه يعرض مهمة واحدة للتطبيق، الذي يستأنف من أي نشاط آخر استدعاء المستخدم.
" never " لم يتم إطلاق هذا النشاط في مستند جديد حتى إذا كانت النية تحتوي على FLAG_ACTIVITY_NEW_DOCUMENT . FLAG_ACTIVITY_NEW_DOCUMENT تعيين هذا الإجراء إلى تجاوز سلوك FLAG_ACTIVITY_NEW_DOCUMENT و FLAG_ACTIVITY_MULTIPLE_TASK الأعلام، إذا تم تعيين أي منهما في النشاط، وتعرض شاشة النظرة العامة مهمة واحدة للتطبيق، والتي تستأنف من أي نشاط آخر استدعيه المستخدم.
ملاحظة: بالنسبة للقيم غير " none " و " launchMode="standard" يجب تعريف النشاط ب launchMode="standard" . إذا لم يتم تحديد هذه السمة، documentLaunchMode="none" استخدام documentLaunchMode="none" .
ValueDescription
"intoExisting"The system searches for a task whose base intent's ComponentName and data URI match those of the launching intent. If the system finds such a task, the system clears the task, and restarts with the root activity receiving a call to onNewIntent(android.content.Intent). If the system does not find such a task, the system creates a new task.
"always"The activity creates a new task for the document, even if the document is already opened. This is the same as setting both the FLAG_ACTIVITY_NEW_DOCUMENT and FLAG_ACTIVITY_MULTIPLE_TASK flags.
"none"The activity does not create a new task for the activity. This is the default value, which creates a new task only when FLAG_ACTIVITY_NEW_TASK is set. The overview screen treats the activity as it would by default: it displays a single task for the app, which resumes from whatever activity the user last invoked.
"never"This activity is not launched into a new document even if the Intent contains FLAG_ACTIVITY_NEW_DOCUMENT. Setting this overrides the behavior of the FLAG_ACTIVITY_NEW_DOCUMENT and FLAG_ACTIVITY_MULTIPLE_TASK flags, if either of these are set in the activity, and the overview screen displays a single task for the app, which resumes from whatever activity the user last invoked
android:enabled
ما إذا كان هذا النشاط يمكن أن يكون مثبتا من قبل النظام - "true" إذا كان يمكن أن يكون، و " false " إن لم يكن. القيمة الافتراضية هي " true ".
يحتوي العنصر <application> على سمة enabled تنطبق على جميع مكونات التطبيقات، بما في ذلك الأنشطة. يجب أن تكون سمات <application> و <activity> حد سواء " true " (كما هي في الوضع الافتراضي) لكي يتمكن النظام من إنشاء النشاط. إذا كان إما " false "، فإنه لا يمكن مثيل.

android:excludeFromRecents

ما إذا كان يجب استبعاد المهمة التي بدأها هذا النشاط أم لا من قائمة التطبيقات المستخدمة مؤخرا، شاشة النظرة العامة . وهذا هو، عندما يكون هذا النشاط هو النشاط الجذر لمهمة جديدة، تحدد هذه السمة ما إذا كان يجب أن لا تظهر المهمة في قائمة التطبيقات الأخيرة. تعيين " true " إذا كان ينبغي استبعاد المهمة من القائمة؛ تعيين " false " إذا كان ينبغي إدراجها . القيمة الافتراضية هي " false ".
android:exported
يحدد هذا العنصر ما إذا كان يمكن إطلاق النشاط من خلال مكونات التطبيقات الأخرى - " true " إذا كان يمكن أن يكون، و " false " إن لم يكن. إذا كان " false "، يمكن تشغيل النشاط فقط من خلال مكونات التطبيق نفسه أو التطبيقات بنفس معرف المستخدم.
إذا كنت تستخدم فلاتر القصد، يجب عدم تعيين هذا العنصر " false ". إذا قمت بذلك، ويحاول التطبيق لاستدعاء النشاط النظام يلقي أكتيفينوتفوندكسيبتيون. بدلا من ذلك، يجب منع التطبيقات الأخرى من استدعاء النشاط من خلال عدم تعيين مرشحات القصد لذلك.

إذا لم يكن لديك فلاتر نية، فإن القيمة الافتراضية لهذا العنصر هي " false ". إذا قمت بتعيين العنصر " true "، فإن النشاط يمكن الوصول إليه من قبل أي تطبيق يعرف اسم الفصل الدقيق له، ولكنه لا يحل عندما يحاول النظام مطابقة نية ضمنية.


هذه السمة ليست الطريقة الوحيدة للحد من تعرض نشاط إلى تطبيقات أخرى. يمكنك أيضا استخدام إذن للحد من الكيانات الخارجية التي يمكنها استدعاء النشاط (راجع سمة permission ).


android:finishOnTaskLaunch

ما إذا كان يجب إغلاق حالة موجودة من النشاط (الانتهاء) كلما كان المستخدم مرة أخرى تطلق مهمتها (يختار المهمة على الشاشة الرئيسية) - " true " إذا كان ينبغي إيقاف تشغيله، و " false " إن لم يكن. القيمة الافتراضية هي " false ".
إذا كانت هذه السمة و allowTaskReparenting على حد سواء " allowTaskReparenting "، هذه السمة ينسخ الآخر. يتم تجاهل تقارب النشاط. النشاط ليس إعادة التكافؤ، ولكن دمرت.

android:hardwareAccelerated

ما إذا كان ينبغي تمكين تشغيل تسريع الأجهزة لهذا النشاط - " true " إذا كان ينبغي تمكينه و " false " إن لم يكن. القيمة الافتراضية هي " false ".
بدءا من أندرويد 3.0، يتوفر برنامج أوبنغل لتسريع الأجهزة للتطبيقات، لتحسين الأداء للعديد من عمليات الرسومات الثنائية الشائعة. عندما يتم تمكين العارض تسارع الأجهزة، يتم تسريع معظم العمليات في قماش، الطلاء، زفيرمود، كولورفيلتر، شادر، وكاميرا. وهذا يؤدي إلى الرسوم المتحركة أكثر سلاسة، والتمرير أكثر سلاسة، وتحسين الاستجابة بشكل عام، حتى بالنسبة للتطبيقات التي لا تستخدم بشكل واضح المكتبات أوبنغل الإطار. بسبب زيادة الموارد اللازمة لتمكين تسريع الأجهزة، فإن التطبيق الخاص بك تستهلك المزيد من ذاكرة الوصول العشوائي.

لاحظ أنه لا يتم تسريع كافة عمليات برنامج أوبنغل 2D. إذا قمت بتمكين العارض المعجل بالأجهزة، فاختبر تطبيقك للتأكد من أنه يمكنه الاستفادة من العارض بدون أخطاء.


android:icon

رمز يمثل النشاط. يتم عرض الرمز للمستخدمين عند الحاجة إلى تمثيل النشاط على الشاشة. على سبيل المثال، يتم عرض رموز الأنشطة التي تبدأ المهام في إطار المشغل. غالبا ما يكون الرمز مصحوبا بتسمية (راجع السمة android:label ).
يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة. إذا لم يتم تعيينه، فسيتم استخدام الرمز المحدد للتطبيق ككل بدلا من ذلك (راجع سمة icon العنصر <application> ).

رمز النشاط - سواء تم تعيينه هنا أو عن طريق عنصر <application> - هو أيضا الرمز الافتراضي لجميع فلاتر النوايا للنشاط (راجع سمة icon العنصر <intent-filter> ).


android:label

تصنيف قابل للقراءة للمستخدم للنشاط. يتم عرض التسمية على الشاشة عندما يجب أن يتم تمثيل النشاط للمستخدم. غالبا ما يتم عرضها مع رمز النشاط.
إذا لم يتم تعيين هذه السمة، فسيتم استخدام مجموعة التصنيفات للتطبيق ككل بدلا من ذلك (راجع سمة label <application> للعنصر).

يعد تصنيف النشاط - سواء تم تعيينه هنا أو عن طريق عنصر <application> - هو أيضا التصنيف الافتراضي لجميع فلاتر النوايا للنشاط (راجع سمة label العنصر <intent-filter> ).


يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم. ومع ذلك، كراحة أثناء تطوير التطبيق، فإنه يمكن أيضا تعيين سلسلة الخام.


android:launchMode

تعليمات حول كيفية إطلاق النشاط. هناك أربعة أنماط تعمل جنبا إلى جنب مع أعلام النشاط ( FLAG_ACTIVITY_* الثوابت) في الكائنات Intent لتحديد ما ينبغي أن يحدث عندما يتم استدعاء النشاط للتعامل مع نية. هم انهم:
" standard " 
" singleTop " 
" singleTask " 
" singleInstance "

الوضع الافتراضي هو " standard ".


كما هو مبين في الجدول أدناه، تنقسم وسائط إلى مجموعتين رئيسيتين، مع الأنشطة " standard " و " singleTop " على جانب واحد، وأنشطة " singleTask " و " singleInstance " من جهة أخرى. نشاط مع وضع " standard " أو " singleTop " إطلاق يمكن مثيل عدة مرات. الحالات يمكن أن تنتمي إلى أي مهمة ويمكن أن يكون موجودا في أي مكان في كومة النشاط. عادة، يتم إطلاقها في المهمة التي تسمى startActivity() (ما لم يحتوي الكائن FLAG_ACTIVITY_NEW_TASK تعليمات FLAG_ACTIVITY_NEW_TASK ، وفي هذه الحالة يتم اختيار مهمة مختلفة - راجع سمة تاسكافينيتي ).


في المقابل، " singleTask " و " singleInstance " الأنشطة يمكن أن تبدأ مهمة فقط. هم دائما في جذر كومة النشاط. وعلاوة على ذلك، يمكن للجهاز عقد مثيل واحد فقط من النشاط في وقت واحد فقط هذه المهمة.


تختلف الأوضاع " standard " و " singleTop " عن بعضها البعض في واحد فقط من الاحترام: في كل مرة هناك نية جديدة لنشاط " standard "، يتم إنشاء مثيل جديد من الفئة للرد على هذا القصد. وتعالج كل حالة نية واحدة. وبالمثل، يمكن أيضا إنشاء مثال جديد singleTop " singleTop " لمعالجة نية جديدة. ومع ذلك، إذا كان الهدف مهمة بالفعل مثيل موجود من النشاط في الجزء العلوي من المكدس الخاص به، هذا المثال سوف تتلقى نية جديدة (في مكالمة onNewIntent() )؛ لم يتم إنشاء مثيل جديد. في ظروف أخرى - على سبيل المثال، إذا كان مثيل موجود من نشاط " singleTop " في المهمة المستهدفة، ولكن ليس في الجزء العلوي من المكدس، أو إذا كان في الجزء العلوي من كومة، ولكن ليس في المهمة المستهدفة - a سيتم إنشاء مثيل جديد ودفع على المكدس.


وبالمثل، إذا قمت بالنقل إلى نشاط على المكدس الحالي، يتم تحديد السلوك من خلال وضع تشغيل النشاط الرئيسي. إذا كان النشاط الأصل يحتوي على وضع إطلاق singleTop (أو الهدف الذي يحتوي على FLAG_ACTIVITY_CLEAR_TOP )، يتم جلب الأصل إلى الجزء العلوي من المكدس، ويتم الحفاظ على حالته. يتم تلقي نية الملاحة من خلال أسلوب onNewIntent() النشاط onNewIntent() . إذا كان النشاط الأصل يحتوي على standard وضع الإطلاق (والهدف up لا يحتوي على FLAG_ACTIVITY_CLEAR_TOP )، فإن كل من النشاط الحالي FLAG_ACTIVITY_CLEAR_TOP قد برزت من المكدس، ويتم إنشاء مثيل جديد للنشاط الأصلي لاستلام نية التنقل.


و " singleTask " و " singleInstance " وسائط تختلف أيضا عن بعضها البعض في واحد فقط من الاحترام: A " singleTask " النشاط يسمح أنشطة أخرى لتكون جزءا من مهمتها. انها دائما في جذور مهمتها، ولكن الأنشطة الأخرى (بالضرورة " standard " و " singleTop " الأنشطة) يمكن إطلاقها في هذه المهمة. ومن ناحية أخرى، فإن نشاط " singleInstance " لا يسمح بأي أنشطة أخرى تكون جزءا من مهمته. إنه النشاط الوحيد في المهمة. إذا بدأ نشاطا آخر، FLAG_ACTIVITY_NEW_TASK تعيين هذا النشاط إلى مهمة مختلفة - كما لو كان FLAG_ACTIVITY_NEW_TASK من FLAG_ACTIVITY_NEW_TASK .

Use CasesLaunch ModeMultiple Instances?Comments
Normal launches for most activities"standard"YesDefault. The system always creates a new instance of the activity in the target task and routes the intent to it.
"singleTop"ConditionallyIf an instance of the activity already exists at the top of the target task, the system routes the intent to that instance through a call to its onNewIntent() method, rather than creating a new instance of the activity.
Specialized launches
(not recommended for general use)
"singleTask"NoThe system creates the activity at the root of a new task and routes the intent to it. However, if an instance of the activity already exists, the system routes the intent to existing instance through a call to its onNewIntent() method, rather than creating a new one.
"singleInstance"NoSame as "singleTask", except that the system doesn't launch any other activities into the task holding the instance. The activity is always the single and only member of its task.
استخدم حالات وضع الإطلاق حالات متعددة؟ تعليقات
عمليات الإطلاق العادية لمعظم الأنشطة " standard " نعم فعلا افتراضي. يقوم النظام دائما بإنشاء مثيل جديد للنشاط في المهمة المستهدفة ويوجه النية إليه.
" singleTop " مشروط إذا كان مثيل النشاط موجود بالفعل في أعلى المهمة المستهدفة، يقوم النظام بتوجيه النية إلى هذا المثيل من خلال استدعاء أسلوب onNewIntent() بدلا من إنشاء مثيل جديد للنشاط.
إطلاق المتخصصة 
(غير موصى به للاستخدام العام) " singleTask " لا النظام يخلق النشاط في جذر مهمة جديدة ويوجه القصد منه. ومع ذلك، في حالة وجود مثيل من النشاط بالفعل، يقوم النظام بتوجيه النية إلى مثيل موجود من خلال استدعاء الأسلوب onNewIntent() بدلا من إنشاء واحدة جديدة.
" singleInstance " لا نفس " singleTask" ، إلا أن النظام لا تطلق أي أنشطة أخرى في مهمة عقد المثيل. النشاط هو دائما العضو الوحيد والوحيد من مهمتها.
كما هو مبين في الجدول أعلاه، standard هو الوضع الافتراضي وهو مناسب لمعظم أنواع الأنشطة. SingleTop هو أيضا وضع إطلاق مشترك ومفيد لأنواع كثيرة من الأنشطة. وسائط أخرى - singleTask و singleInstance - ليست مناسبة لمعظم التطبيقات ، لأنها تؤدي إلى نموذج التفاعل الذي من المرجح أن تكون غير مألوفة للمستخدمين ومختلفة جدا عن معظم التطبيقات الأخرى.

بغض النظر عن وضع الإطلاق الذي تختاره، تأكد من اختبار قابلية الاستخدام للنشاط أثناء الإطلاق وعند الانتقال إليه مرة أخرى من الأنشطة والمهام الأخرى باستخدام زر الرجوع .


لمزيد من المعلومات حول أوضاع الإطلاق وتفاعلها مع أعلام إنتنت، راجع وثيقة المهام و باك ستاك .


android:maxRecents

الحد الأقصى لعدد المهام المتأصلة في هذا النشاط في شاشة النظرة العامة . عند الوصول إلى هذا العدد من الإدخالات، يقوم النظام بإزالة المثيل الأقل استخداما مؤخرا من شاشة النظرة العامة. القيم الصالحة هي من 1 إلى 50 (25 على أجهزة الذاكرة المنخفضة)؛ صفر غير صالح. يجب أن يكون هذا قيمة عدد صحيح، مثل 50. القيمة المفترضة هي 16.
android:MaxAspectRatio
الحد الأقصى لنسبة العرض إلى الارتفاع التي يدعمها النشاط. إذا كان التطبيق يعمل على جهاز مع نسبة العرض إلى الارتفاع أوسع، ونظام ليتربوكسيس تلقائيا التطبيق، وترك أجزاء من الشاشة غير المستخدمة حتى يمكن تشغيل التطبيق في الحد الأقصى المحدد نسبة الارتفاع. يتم التعبير عن الحد الأقصى لنسبة العرض إلى الارتفاع كشكل عشري لحاصل البعد الأطول للجهاز مقسوما على بعده الأقصر. على سبيل المثال، إذا كان الحد الأقصى لنسبة العرض إلى الارتفاع 7: 3، قم بتعيين قيمة هذه السمة إلى 2.33. على الأجهزة غير القابلة للارتداء، يجب أن تكون قيمة هذه السمة 1.33 أو أكبر. على الأجهزة القابلة للارتداء، يجب أن يكون 1.0 أو أكبر. وإلا فإن النظام يتجاهل القيمة المحددة.
ملاحظة: يتم تجاهل هذه السمة إذا كان النشاط resizeableActivity تعيين إلى resizeableActivity ، لأن هذا يعني أن النشاط الخاص بك يدعم أي حجم.

لمزيد من المعلومات حول هذه السمة، راجع دعم شاشات متعددة.


android:multiprocess

ما إذا كان يمكن إطلاق مثيل النشاط في عملية المكون الذي بدأ - " true " إذا كان يمكن أن يكون، و " false " إن لم يكن. القيمة الافتراضية هي " false ".
عادة، يتم تشغيل مثيل جديد من النشاط في عملية التطبيق الذي تعريفه، لذلك يتم تشغيل كافة مثيلات النشاط في نفس العملية. ومع ذلك، إذا تم تعيين هذه العلامة إلى " true "، يمكن تشغيل مثيلات النشاط في عمليات متعددة، مما يسمح للنظام بإنشاء مثيلات حيثما يتم استخدامها (بشرط أذونات تسمح بذلك)، وهو أمر غير ضروري تقريبا أو مرغوب فيه.

android:name

اسم الفئة التي تنفذ النشاط، فئة فرعية من Activity . يجب أن تكون قيمة السمة اسم فئة مؤهل بالكامل (مثل، " com.example.project.ExtracurricularActivity "). ومع ذلك، كختزال، إذا كان الحرف الأول للاسم هو فترة (على سبيل المثال، " .ExtracurricularActivity ")، يتم إلحاقه باسم الحزمة المحدد في العنصر <manifest> .ExtracurricularActivity <manifest> .
بعد نشر تطبيقك، يجب عدم تغيير هذا الاسم (إلا إذا عينت android:exported ="false" ).

لا يوجد افتراضي. يجب تحديد الاسم.


android:noHistory

ما إذا كان يجب إزالة النشاط من كومة النشاط وانتهائه finish() طريقة انتهائه ( finish() تسمى) عندما ينتقل المستخدم بعيدا عنه وأنه لم يعد مرئيا على الشاشة - " true " إذا كان ينبغي الانتهاء منه، و " false " ان لم. القيمة الافتراضية هي " false ".
تعني قيمة " true " أن النشاط لن يترك أثرا تاريخيا. انها لن تبقى في كومة النشاط للمهمة، وبالتالي فإن المستخدم لن تكون قادرة على العودة إليها. في هذه الحالة، onActivityResult() لا يسمى أبدا إذا قمت بتشغيل نشاط آخر نتيجة من هذا النشاط.

تم إدخال هذه السمة في أبي ليفيل 3.


android:parentActivityName

اسم فئة الوالد المنطقي للنشاط. يجب أن يتطابق الاسم هنا مع اسم الفئة المعطى لسمة android:name <activity> بالعنصر.
يقرأ النظام هذه الخاصية المميزة لتحديد النشاط الذي يجب أن يبدأ عندما يقوم المستخدم بالضغط على الزر أوب في شريط الإجراءات. يمكن للنظام أيضا استخدام هذه المعلومات لتجميع كومة الخلفي من الأنشطة مع TaskStackBuilder .

لدعم مستويات واجهة برمجة التطبيقات 4 - 16، يمكنك أيضا الإعلان عن النشاط الأصلي باستخدام عنصر <meta-data> يحدد قيمة "android.support.PARENT_ACTIVITY" . فمثلا:




<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>




لمزيد من المعلومات حول إعلان النشاط الرئيسي لدعم أوب أوبتيون، اقرأ توفير أوب نافيغاتيون .


تم إدخال هذه السمة في أبي ليفيل 16.


android:persistableMode

يحدد كيفية الاحتفاظ بمثيل نشاط ما ضمن مهمة تحتوي على إعادة تشغيل الجهاز.

إذا كان النشاط الجذر لمهمة تعيين قيمة السمة persistRootOnly ، يتم الاحتفاظ فقط النشاط الجذر. وإلا، يتم فحص الأنشطة التي هي أعلى كومة العودة المهمة؛ يتم الاحتفاظ بأي من هذه الأنشطة التي تم تعيين قيمة هذه السمة إلى persistAcrossReboots .


إذا كنت تستخدم هذه السمة، يجب تعيين قيمته إلى أحد الإجراءات التالية:




ValueDescription
persistRootOnlyDefault value. When the system restarts, the activity task is preserved, but only the root activity's launching intent is used.
When your app's launching intent loads your app's root activity, the activity doesn't receive a PersistableBundle object. Therefore, don't use onSaveInstanceState() to preserve the state of your app's root activity across a device restart.
Note: This attribute value affects your app's behavior only if it's set on your app's root activity.
persistAcrossReboots
This activity's state is preserved, along with the state of each activity higher up the back stack that has its own persistableMode attribute set to persistAcrossReboots. If an activity doesn't have a persistableModeattribute that is set to persistAcrossReboots, or if it's launched using theIntent.FLAG_ACTIVITY_NEW_DOCUMENT flag, then that activity, along with all activities higher up the back stack, aren't preserved.
When an intent loads an activity whose persistableMode attribute is set to persistAcrossReboots in your app, the activity receives a PersistableBundle object in its onCreate() method. Therefore, you can useonSaveInstanceState() to preserve the state of an activity across a device restart as long as itspersistableMode attribute is set to persistAcrossReboots.
Note: This attribute value affects your app's behavior even if it's set on an activity other than your app's root activity.
persistNever
The activity's state isn't preserved.
Note: This attribute value affects your app's behavior only if it's set on your app's root activity.
 التالية:

القيمة وصف

persistRootOnly القيمة الافتراضية. عند إعادة تشغيل النظام، يتم الاحتفاظ بمهمة النشاط، ولكن يتم استخدام نية إطلاق نشاط الجذر فقط.
عندما يؤدي نية إطلاق تطبيقك إلى تحميل نشاط جذر تطبيقك، لا يتلقى PersistableBundle كائن PersistableBundle . لذلك، لا تستخدم onSaveInstanceState() للحفاظ على حالة النشاط الجذر التطبيق الخاص بك عبر إعادة تشغيل الجهاز.

ملاحظة: تؤثر قيمة السمة هذه على سلوك تطبيقك فقط إذا تم تعيينه على النشاط الجذري لتطبيقك.


persistAcrossReboots

يتم الحفاظ على حالة هذا النشاط، جنبا إلى جنب مع حالة كل نشاط أعلى المكدس الخلفي الذي لديه سمة persistAcrossReboots الخاصة تعيين persistAcrossReboots . إذا كان النشاط لا يحتوي على سمة persistAcrossReboots التي تم تعيينها على persistAcrossReboots أو إذا تم إطلاقه باستخدام علامة Intent.FLAG_ACTIVITY_NEW_DOCUMENT ثم هذا النشاط، جنبا إلى جنب مع جميع الأنشطة أعلى كومة الخلفي، لا يتم الاحتفاظ بها.

عندما يحمل نية نشاط الذي يتم تعيين سمة persistAcrossReboots إلى persistAcrossReboots في التطبيق الخاص بك، يتلقى النشاط كائن PersistableBundle في أسلوب onCreate() . لذلك، يمكنك استخدام onSaveInstanceState() للحفاظ على حالة نشاط عبر إعادة تشغيل الجهاز طالما يتم تعيين السمة persistAcrossReboots ل persistAcrossReboots .


ملاحظة: تؤثر قيمة السمة هذه في سلوك تطبيقك حتى إذا تم تعيينه على نشاط بخلاف نشاط جذر تطبيقك.


persistNever

لم يتم الحفاظ على حالة النشاط.

ملاحظة: تؤثر قيمة السمة هذه على سلوك تطبيقك فقط إذا تم تعيينه على النشاط الجذري لتطبيقك.


تم إدخال هذه السمة في مستوى أبي 21.


android:permission

اسم إذن أن العملاء يجب أن يكون لبدء النشاط أو الحصول على خلاف ذلك للرد على نية. إذا لم يتم منح المتصل من startActivity() أو startActivityForResult() الإذن المحدد، لن يتم تسليم نيتها إلى النشاط.
إذا لم يتم تعيين هذه السمة، فسيتم تطبيق الإذن الذي تم تعيينه بواسطة سمة permission <application> على النشاط. إذا لم يتم تعيين أي سمة، النشاط غير محمية بإذن.

لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة ومستند آخر، الأمان و بيرميسيونس .


android:process

اسم العملية التي يجب تشغيل النشاط فيها. عادة، يتم تشغيل كافة مكونات أحد التطبيقات في اسم عملية افتراضية تم إنشاؤها للتطبيق ولا تحتاج إلى استخدام هذه السمة. ولكن إذا لزم الأمر، يمكنك تجاوز اسم العملية الافتراضي مع هذه السمة، مما يسمح لك بنشر مكونات التطبيق عبر عمليات متعددة.
إذا كان الاسم المعين لهذه السمة يبدأ بنقطتين (':')، يتم إنشاء عملية جديدة، خاصة إلى التطبيق، عند الحاجة إليها ويتم تشغيل النشاط في تلك العملية. إذا كان اسم العملية يبدأ بحرف صغير، سيتم تشغيل النشاط في عملية عالمية من هذا الاسم، شريطة أن يكون لديه إذن للقيام بذلك. هذا يسمح المكونات في تطبيقات مختلفة لتبادل عملية، والحد من استخدام الموارد.

يمكن لخاصية process <application> عنصر <application> تعيين اسم عملية افتراضية مختلفة لكافة المكونات.


android:relinquishTaskIdentity

ما إذا كان النشاط يتخلى عن محددات مهامه لنشاط فوقه في كومة المهام. المهمة التي يكون نشاط الجذر لها هذه السمة تعيين إلى " true " محل النية الأساسية مع النشاط التالي في المهمة. إذا كان النشاط التالي أيضا هذه السمة تعيين إلى " true " ثم أنها سوف تسفر عن نية قاعدة إلى أي نشاط أن تطلق في نفس المهمة. يستمر هذا لكل نشاط حتى يتم مواجهة نشاط الذي تم تعيين هذه السمة إلى " false ". القيمة الافتراضية هي " false ".
تسمح هذه السمة التي تم تعيينها إلى " true " أيضا باستخدام النشاط ل ActivityManager.TaskDescription لتغيير التصنيفات والألوان والرموز في شاشة النظرة العامة .

resizeableActivity

لتحديد ما إذا كان التطبيق يدعم عرض متعدد النوافذ أم لا . يمكنك تعيين هذه السمة في العنصر <activity> أو <application> .

إذا قمت بتعيين هذه السمة إلى ترو، يمكن للمستخدم تشغيل النشاط في أوضاع تقسيم الشاشة و فريفورم. إذا قمت بتعيين السمة إلى فالس، فإن النشاط لا يدعم وضع الإطار المتعدد. إذا كانت هذه القيمة كاذبة، ويحاول المستخدم إطلاق النشاط في وضع متعدد النوافذ، فإن النشاط يأخذ على كامل الشاشة.


إذا كان تطبيقك يستهدف مستوى واجهة برمجة التطبيقات 24 أو أعلى، ولكنك لا تحدد قيمة لهذه السمة، فستكون قيمة السمة افتراضية إلى ترو.


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) 24.


android:screenOrientation

اتجاه عرض النشاط على الجهاز. يتجاهل النظام هذه السمة إذا كان النشاط قيد التشغيل في وضع متعدد الإطار .
يمكن أن تكون القيمة أي من السلاسل التالية:

" unspecified " القيمة الافتراضية. النظام يختار التوجه. قد تختلف السياسة التي يستخدمها، وبالتالي الخيارات التي يتم إجراؤها في سياقات معينة، من جهاز لآخر.

" behind " نفس اتجاه النشاط الذي هو أسفله مباشرة في كومة النشاط.
" landscape " اتجاه أفقي (العرض أوسع مما هو عليه طويل القامة).
" portrait " اتجاه عمودي (العرض أطول من عرضه).
" reverseLandscape " اتجاه أفقي في الاتجاه المعاكس من المناظر الطبيعية العادية. تمت إضافتها في مستوى واجهة برمجة التطبيقات 9.
" reversePortrait " اتجاه عمودي في الاتجاه المعاكس من صورة طبيعية. تمت إضافتها في مستوى واجهة برمجة التطبيقات 9.
" sensorLandscape " اتجاه أفقي، ولكن يمكن أن تكون إما طبيعية أو العكس المشهد بناء على استشعار الجهاز. وأضاف في مستوى API 9.
" sensorPortrait" اتجاه عمودي، ولكن يمكن أن تكون إما طبيعية أو عكس صورة استنادا إلى جهاز استشعار. وأضاف في مستوى API 9.
" userLandscape" اتجاه أفقي، ولكن يمكن أن تكون إما طبيعية أو العكس المشهد بناء على استشعار جهاز استشعار وتفضيل المستخدم. إذا كان المستخدم بتأمين تناوب قائمة على الاستشعار، وهذه يتصرف نفس landscape، وإلا فإنه يتصرف نفس sensorLandscape. وأضاف في مستوى API 18.
" userPortrait" اتجاه عمودي، ولكن يمكن أن تكون إما طبيعية أو عكس صورة على أساس استشعار جهاز استشعار وتفضيل المستخدم. إذا كان المستخدم بتأمين تناوب قائمة على الاستشعار، وهذه يتصرف نفس portrait، وإلا فإنه يتصرف نفس sensorPortrait. وأضاف في مستوى API 18.
" sensor" يتم تحديد التوجه من قبل جهاز استشعار للتوجيه الجهاز. توجه العرض يعتمد على كيف يمكن للمستخدم هو عقد الجهاز. يتغير عندما يدور المستخدم للجهاز. بعض الأجهزة، على الرغم من لن تدوير لجميع التوجهات المحتملة أربعة، بشكل افتراضي. للسماح لجميع التوجهات الأربعة، استخدام "fullSensor".
" fullSensor" يتم تحديد التوجه من قبل جهاز استشعار للتوجيه جهاز لأي من 4 التوجهات. هذا هو مماثل ل "sensor"ما عدا هذا يسمح لأي من 4 التوجهات الشاشة ممكن، بغض النظر عن الجهاز سوف تفعل عادة (على سبيل المثال، بعض الأجهزة لن عادة استخدام صورة عكسية أو عكس المشهد، ولكن هذا تمكن هؤلاء). وأضاف في مستوى API 9.
" nosensor" يتم تحديد التوجه دون الرجوع إلى جهاز استشعار للتوجيه البدني. يتم تجاهل أجهزة الاستشعار، وبالتالي فإن العرض لا تناوب على أساس كيف يقوم المستخدم بتحريك الجهاز. فيما عدا هذا التمييز، يختار نظام التوجيه باستخدام نفس السياسة بالنسبة لل" unspecified" الإعداد.
" user" التوجه المفضل للمستخدم الحالي.
" fullUser" إذا كان المستخدم بتأمين تناوب قائمة على الاستشعار، وهذه يتصرف نفس user، وإلا فإنه يتصرف نفس fullSensorويسمح لأي من 4 التوجهات الشاشة الممكنة. وأضاف في مستوى API 18.
" locked" أقفال التوجه للتناوب الحالي، أيا كان ذلك. وأضاف في مستوى API 18.
ملاحظة: 







"unspecified"The default value. The system chooses the orientation. The policy it uses, and therefore the choices made in specific contexts, may differ from device to device.
"behind"The same orientation as the activity that's immediately beneath it in the activity stack.
"landscape"Landscape orientation (the display is wider than it is tall).
"portrait"Portrait orientation (the display is taller than it is wide).
"reverseLandscape"Landscape orientation in the opposite direction from normal landscape. Added in API level 9.
"reversePortrait"Portrait orientation in the opposite direction from normal portrait. Added in API level 9.
"sensorLandscape"Landscape orientation, but can be either normal or reverse landscape based on the device sensor. Added in API level 9.
"sensorPortrait"Portrait orientation, but can be either normal or reverse portrait based on the device sensor. Added in API level 9.
"userLandscape"Landscape orientation, but can be either normal or reverse landscape based on the device sensor and the user's sensor preference. If the user has locked sensor-based rotation, this behaves the same as landscape, otherwise it behaves the same as sensorLandscapeAdded in API level 18.
"userPortrait"Portrait orientation, but can be either normal or reverse portrait based on the device sensor and the user's sensor preference. If the user has locked sensor-based rotation, this behaves the same as portrait, otherwise it behaves the same as sensorPortraitAdded in API level 18.
"sensor"The orientation is determined by the device orientation sensor. The orientation of the display depends on how the user is holding the device; it changes when the user rotates the device. Some devices, though, will not rotate to all four possible orientations, by default. To allow all four orientations, use "fullSensor".
"fullSensor"The orientation is determined by the device orientation sensor for any of the 4 orientations. This is similar to "sensor" except this allows any of the 4 possible screen orientations, regardless of what the device will normally do (for example, some devices won't normally use reverse portrait or reverse landscape, but this enables those). Added in API level 9.
"nosensor"The orientation is determined without reference to a physical orientation sensor. The sensor is ignored, so the display will not rotate based on how the user moves the device. Except for this distinction, the system chooses the orientation using the same policy as for the "unspecified" setting.
"user"The user's current preferred orientation.
"fullUser"If the user has locked sensor-based rotation, this behaves the same as user, otherwise it behaves the same as fullSensor and allows any of the 4 possible screen orientations. Added in API level 18.
"locked"Locks the orientation to its current rotation, whatever that is. Added in API level 18.

ملاحظة: عندما تقوم بتعريف واحد من أفقي أو عمودي القيم، ويعتبر شرطا من الصعب على التوجه الذي يدير هذا النشاط. على هذا النحو، القيمة التي أعلن تمكن تصفية الخدمات مثل اللعب جوجل حتى طلبك متاح فقط للأجهزة التي تدعم التوجه تتطلبها الأنشطة الخاصة بك. على سبيل المثال، إذا قمت بتعريف إما "landscape"، "reverseLandscape"أو "sensorLandscape"، ثم التطبيق الخاص بك وسوف تكون متوفرة فقط على الأجهزة التي تدعم اتجاه أفقي. ومع ذلك، يجب أيضا أن يعلن صراحة أن التطبيق الخاص بك يتطلب عمودي أو أفقي مع <uses-feature>عنصر. فمثلا،<uses-feature android:name="android.hardware.screen.portrait"/>. هذا هو محض سلوك تصفية التي تقدمها جوجل اللعب (وغيرها من الخدمات التي تدعم ذلك) والمنصة نفسها لا تتحكم ما إذا كان يمكن تثبيت التطبيق الخاص بك عندما يدعم الجهاز فقط بعض التوجهات.


android:showForAllUsers

أم لا يظهر النشاط عند المستخدم الحالي للجهاز يختلف عن المستخدم الذي أطلق النشاط. يمكنك تعيين هذه السمة إلى ذات القيمة الحرفي "true"أو "false"-أو يمكنك تعيين السمة إلى سمة الموارد أو الموضوع الذي يحتوي على قيمة منطقية.

تمت إضافة هذه السمة في مستوى API 23.


android:stateNotNeeded

أم لا هذا النشاط يمكن أن يقتل وبنجاح إعادة تشغيل دون حفظ حالته - " true" إذا كان يمكن إعادة دون الرجوع إلى حالته السابقة، و" false" إذا كنت بحاجة حالته السابقة. القيمة الافتراضية هي " false".
عادة، قبل أن يتم إيقاف النشاط مؤقتا لتوفير الموارد، في onSaveInstanceState()ما يسمى الأسلوب. هذه الطريقة يخزن الوضع الحالي للنشاط في Bundleالكائن، والذي ثم تمريرها إلى onCreate()عند إعادة تشغيل النشاط. إذا تم تعيين هذه السمة إلى " true"، onSaveInstanceState()قد لا يتم استدعاء و onCreate()سيتم تمريرها nullبدلا من باقة - تماما كما كانت عليه عندما بدأ النشاط لأول مرة.

A " trueيضمن" الإعداد الذي النشاط يمكن إعادة في غياب الدولة المحتجزة. على سبيل المثال، النشاط الذي يعرض الشاشة الرئيسية يستخدم هذا الإعداد للتأكد من أنها لا تحصل على إزالتها إذا تعطل لسبب ما.


supportsPictureInPicture

تحديد ما إذا كان النشاط يدعم صورة داخل صورة العرض. يتجاهل النظام هذه السمة إذا android:resizeableActivityهو زائف.

تمت إضافة هذه السمة في مستوى API 24.


android:taskAffinity

المهمة التي النشاط لديه تقارب ل. أنشطة بنفس النسب تنتمي من الناحية النظرية لنفس المهمة (لنفس "تطبيق" من وجهة نظر المستخدم). يتم تحديد تقارب مهمة من تقارب من النشاط جذورها.
تقارب يحدد شيئين - المهمة التي النشاط وإعادة أصليا ل(انظر allowTaskReparentingالسمة) والمهمة التي ستضم النشاط عند إطلاقه مع FLAG_ACTIVITY_NEW_TASKالعلم.

افتراضيا، كافة الأنشطة في تطبيق لها نفس النسب. يمكنك تعيين هذه السمة لمجموعة منهم بشكل مختلف، وحتى وضع الأنشطة المحددة في تطبيقات مختلفة داخل نفس المهمة. لتحديد أن هذا النشاط لا يكون هناك تقارب لأية مهمة، لأنها مجموعة سلسلة فارغة.


إذا لم يتم تعيين هذه السمة، النشاط يرث تقارب المحددة لتطبيق (انظر <application>العنصر taskAffinityالسمة). اسم تقارب الافتراضية للتطبيق هو اسم الحزمة التي وضعتها <manifest>عنصر.


android:theme

إشارة إلى مورد أسلوب تحديد موضوع شامل للنشاط. هذا تلقائيا بتعيين سياق النشاط لاستخدام هذا الموضوع (انظر setTheme()، ويمكن أن يتسبب أيضا "الانطلاق" الرسوم المتحركة قبل النشاط التي يتم إطلاقها (لتتناسب بشكل أفضل ما النشاط في الواقع يبدو مثل).
إذا لم يتم تعيين هذه السمة، النشاط يرث موضوع تعيين لتطبيق ككل - من <application>العنصر themeالسمة. إذا تم أيضا لم يتم تغيير هذه السمة، يتم استخدام موضوع النظام الافتراضي. لمزيد من المعلومات، راجع أنماط والسمات دليل المطور.

android:uiOptions

خيارات اضافية لUI نشاطا و.
يجب أن تكون واحدة من القيم التالية.

القيمة وصف

"none" لا توجد خيارات UI إضافية. هذا هو الإعداد الافتراضي.
"splitActionBarWhenNarrow" إضافة شريط في أسفل الشاشة لعرض بنود العمل في شريط التطبيق (المعروف أيضا باسم بار العمل )، عندما مقيدة على المساحات الأفقية (مثل عندما تكون في وضع عمودي على الهاتف). بدلا من عدد قليل من بنود العمل التي تظهر في شريط التطبيق في أعلى الشاشة، يتم تقسيم شريط التطبيق في مقطع التنقل العلوي والسفلي لشريط بنود العمل. وهذا ما يضمن يتم إجراء قدر معقول من المساحة المتوفرة ليس فقط بالنسبة للبنود العمل، ولكن أيضا لعناصر الملاحة والعنوان في أعلى. لا يتم تقسيم عناصر القائمة عبر القضبان اثنين. تظهر دائما معا.
لمزيد من المعلومات حول شريط التطبيق، راجع إضافة التطبيق بار دورة تدريبية.



ValueDescription
"none"No extra UI options. This is the default.
"splitActionBarWhenNarrow"Add a bar at the bottom of the screen to display action items in the app bar (also known as theaction bar), when constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small number of action items appearing in the app bar at the top of the screen, the app bar is split into the top navigation section and the bottom bar for action items. This ensures a reasonable amount of space is made available not only for the action items, but also for navigation and title elements at the top. Menu items are not split across the two bars; they always appear together.

لمزيد من المعلومات حول شريط التطبيق، راجع إضافة التطبيق بار دورة تدريبية.


تمت إضافة هذه السمة في مستوى API 14.


android:windowSoftInputMode

كيف الإطار الرئيسي للنشاط يتفاعل مع الإطار الذي يحتوي على الشاشة لوحة المفاتيح لينة. الإعداد لهذه السمة يؤثر أمرين:
حالة لوحة المفاتيح لينة - سواء كان مخفيا أو مرئية - عندما يصبح النشاط محط اهتمام المستخدم.
تعديل تبذل لالنافذة الرئيسية للنشاط - ما إذا كان حجمها أصغر لإفساح المجال لوحة المفاتيح لينة أو ما إذا كانت محتوياته عموم لجعل التركيز الحالي مرئية عندما يتم تغطية جزء من الإطار عن طريق لوحة المفاتيح لينة.
يجب أن يكون الإعداد إحدى القيم المدرجة في الجدول التالي، أو مزيج من واحد " state..." قيمة زائد واحد " adjust..." قيمة. تحديد قيم متعددة في أي من المجموعتين - متعددة " state..." القيم، على سبيل المثال - وغير معروف النتائج. يتم فصل القيم الفردية عن طريق شريط عمودي ( |). فمثلا:




<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
  .مجموعة القيم هنا (غير " stateUnspecified" و " adjustUnspecified") القيم تجاوز المنصوص عليها في هذا الموضوع.

ValueDescription
"stateUnspecified"The state of the soft keyboard (whether it is hidden or visible) is not specified. The system will choose an appropriate state or rely on the setting in the theme.
This is the default setting for the behavior of the soft keyboard.
"stateUnchanged"The soft keyboard is kept in whatever state it was last in, whether visible or hidden, when the activity comes to the fore.
"stateHidden"The soft keyboard is hidden when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity.
"stateAlwaysHidden"The soft keyboard is always hidden when the activity's main window has input focus.
"stateVisible"The soft keyboard is visible when that's normally appropriate (when the user is navigating forward to the activity's main window).
"stateAlwaysVisible"The soft keyboard is made visible when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity.
"adjustUnspecified"It is unspecified whether the activity's main window resizes to make room for the soft keyboard, or whether the contents of the window pan to make the current focus visible on-screen. The system will automatically select one of these modes depending on whether the content of the window has any layout views that can scroll their contents. If there is such a view, the window will be resized, on the assumption that scrolling can make all of the window's contents visible within a smaller area.
This is the default setting for the behavior of the main window.
"adjustResize"The activity's main window is always resized to make room for the soft keyboard on screen.
"adjustPan"The activity's main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window.



القيمة وصف

" stateUnspecified" لم يتم تحديد حالة لوحة المفاتيح لينة (سواء كان مخفيا أو مرئية). سيقوم النظام اختيار حالة مناسبة أو تعتمد على الإعداد في هذا الموضوع.
هذا هو الإعداد الافتراضي للسلوك لوحة المفاتيح لينة.
" stateUnchanged" يتم الاحتفاظ لوحة المفاتيح لينة في أي الحالة التي كان الماضي في سواء مرئية أو مخفية، عندما يأتي هذا النشاط في المقدمة.
" stateHidden" يتم إخفاء لوحة المفاتيح لينة عندما يختار المستخدم النشاط - وهذا هو، عندما يتنقل المستخدم بالإيجاب قدما إلى النشاط، بدلا من ظهورهم في ذلك بسبب ترك نشاط آخر.
" stateAlwaysHidden" لوحة المفاتيح لينة تكون دائما سرية عندما يكون الإطار الرئيسي للنشاط تركيز الإدخال.
" stateVisible" لوحة المفاتيح لينة مرئيا عندما يكون من المناسب عادة (عندما يقوم المستخدم تبحر إلى الأمام إلى الإطار الرئيسي للنشاط).
" stateAlwaysVisible" وتتكون لوحة المفاتيح لينة وضوحا عندما يختار المستخدم النشاط - وهذا هو، عندما يتنقل المستخدم بالإيجاب قدما إلى النشاط، بدلا من ظهورهم في ذلك بسبب ترك نشاط آخر.
" adjustUnspecified" ومن غير محدد سواء الإطار الرئيسي للنشاط تغيير حجم لإفساح المجال لوحة المفاتيح لينة، أو ما إذا كانت محتويات المقلاة نافذة لجعل التركيز الحالي مرئية على الشاشة. سيقوم النظام تلقائيا باختيار واحد من هذه الأوضاع اعتمادا على ما إذا كان محتوى النافذة لديها أي آراء التخطيط الذي يمكن التمرير محتوياتها. إذا كان هناك مثل هذا الرأي، سيتم تغيير حجم النافذة، على افتراض أن التمرير يمكن أن تجعل كل من محتويات النافذة مرئية في مساحة أصغر.
هذا هو الإعداد الافتراضي للسلوك النافذة الرئيسية.
" adjustResize" دائما تغيير حجم الإطار الرئيسي للنشاط لإفساح المجال لوحة المفاتيح لينة على الشاشة.
" adjustPan" لا يتم تغيير حجم الإطار الرئيسي للنشاط لإفساح المجال لوحة المفاتيح لينة. بدلا من ذلك، يتم انتقادات محتويات نافذة تلقائيا بحيث لا تحجب التركيز الحالي بواسطة لوحة المفاتيح، ويمكن للمستخدمين رؤية دائما ما تكتب. هذا هو عموما أقل من المرغوب فيه من تغيير الحجم، لأن المستخدم قد يحتاج لإغلاق لوحة المفاتيح لينة للحصول على والتفاعل مع أجزاء حجب من النافذة.
وقدم هذه السمة في مستوى API 3.

قدم في:

API المستوى 1 لجميع الصفات ما عدا noHistoryو windowSoftInputModeالتي تمت إضافتها في مستوى API 3.
أنظر أيضا:
<application> 
<activity-alias>



<النشاط مستعار>

بناء الجملة:


<activity-alias>

SYNTAX:
<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string" >
    . . .</activity-alias>
CONTAINED IN:
الواردة في:
<application>
يمكن أن تحتوي على:
<intent-filter> 
<meta-data>
وصف:
اسم مستعار لنشاط، يدعى سمة targetActivity . يجب أن يكون الهدف في نفس تطبيق الاسم المستعار ويجب أن يتم الإعلان عنه قبل الاسم المستعار في البيان.
يعرض الاسم المستعار النشاط المستهدف ككيان مستقل. يمكن أن يكون لها مجموعة من مرشحات نواياها الخاصة، وأنها بدلا من فلاتر القصد على النشاط المستهدف نفسه، تحديد النوايا يمكن تفعيل الهدف من خلال الاسم المستعار وكيفية تعامل النظام الاسم المستعار. على سبيل المثال، المرشحات القصد على الاسم المستعار قد تحدد " android.intent.action.MAIN " و " android.intent.category.LAUNCHER " الأعلام، مما تسبب في أن تكون ممثلة في قاذفة التطبيق، على الرغم من أن أيا من المرشحات على فإن النشاط المستهدف نفسه وضع هذه الأعلام.

وباستثناء targetActivity ، targetActivity <activity-alias> مجموعة فرعية من سمات <activity> . بالنسبة للسمات في المجموعة الفرعية، لا يتم نقل أي من القيم المحددة للاستهداف إلى الاسم المستعار. ومع ذلك، بالنسبة إلى السمات غير الموجودة في المجموعة الفرعية، تنطبق القيم التي تم تعيينها للنشاط المستهدف أيضا على الاسم المستعار.


الصفات:

android:enabled
ما إذا كان النشاط المستهدف يمكن أن يكون مثبتا من قبل النظام من خلال هذا الاسم المستعار - " true " إذا كان يمكن أن يكون، و " false " إن لم يكن. القيمة الافتراضية هي " true ".
يحتوي العنصر <application> على سمة enabled تنطبق على جميع مكونات التطبيقات، بما في ذلك الأسماء المستعارة للنشاط. يجب أن تكون سمات <application> و <activity-alias> حد سواء " true " لكي يتمكن النظام من إنشاء النشاط المستهدف من خلال الاسم المستعار. إذا كان أي منهما " false "، فإن الاسم المستعار لا يعمل.

android:exported

ما إذا كانت مكونات التطبيقات الأخرى لا يمكن إطلاق النشاط المستهدف من خلال هذا الاسم المستعار - " true " إذا كانت قادرة على ذلك، و " false " إن لم يكن. إذا كان " false "، يمكن إطلاق النشاط المستهدف من خلال الاسم المستعار فقط من خلال مكونات نفس التطبيق مثل الاسم المستعار أو التطبيقات التي لها نفس معرف المستخدم.
تعتمد القيمة الافتراضية على ما إذا كان الاسم المستعار يحتوي على فلاتر مقترحة. عدم وجود أي مرشحات يعني أنه يمكن استدعاء النشاط من خلال الاسم المستعار فقط عن طريق تحديد الاسم المحدد للاسم المستعار. وهذا يعني أن الاسم المستعار مخصص فقط للاستخدام الداخلي للتطبيق (لأن الآخرين لا يعرفون اسمه) - وبالتالي فإن القيمة الافتراضية هي " false ". من ناحية أخرى، فإن وجود مرشح واحد على الأقل يعني أن الاسم المستعار مخصص للاستخدام الخارجي - وبالتالي فإن القيمة الافتراضية هي " true ".

android:icon

رمز للنشاط المستهدف عند عرضه للمستخدمين من خلال الاسم المستعار. راجع السمة icon العنصر <activity> للحصول على مزيد من المعلومات.
android:label
تصنيف قابل للقراءة للمستخدم للاسم المستعار عند عرضه للمستخدمين من خلال الاسم المستعار. راجع سمة label العنصر <activity> للحصول على مزيد من المعلومات.
android:name
اسم فريد للاسم المستعار. يجب أن يشبه الاسم اسم فئة مؤهل بالكامل. ولكن، على عكس اسم النشاط المستهدف، اسم الاسم المستعار هو تعسفي. فإنه لا يشير إلى فئة الفعلية.
android:permission
اسم إذن أن العملاء يجب أن يكون لإطلاق النشاط المستهدف أو الحصول عليه أن تفعل شيئا عن طريق الاسم المستعار. إذا لم يتم منح المتصل من startActivity() أو startActivityForResult() الإذن المحدد، لن يتم تنشيط النشاط المستهدف.
تقوم هذه السمة باستبدال أي إذن للنشاط المستهدف نفسه. إذا لم يتم تعيين، لا حاجة إلى إذن لتنشيط الهدف من خلال الاسم المستعار.

لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة.


android:targetActivity

اسم النشاط الذي يمكن تفعيله من خلال الاسم المستعار. يجب أن يتطابق هذا الاسم مع السمة نيم لعنصر <activity> الذي يسبق الاسم المستعار في البيان.
قدم في:
أبي ليفيل 1
أنظر أيضا:
<activity>




-------------------------

<تطبيق>
بناء الجملة:

<application>

SYNTAX:
<application android:allowTaskReparenting=["true" | "false"]
             android:allowBackup=["true" | "false"]
             android:allowClearUserData=["true" | "false"]
             android:backupAgent="string"
             android:backupInForeground=["true" | "false"]
             android:banner="drawable resource"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:directBootAware=["true" | "false"]
             android:enabled=["true" | "false"]
             android:extractNativeLibs=["true" | "false"]
             android:fullBackupContent="string"
             android:fullBackupOnly=["true" | "false"]
             android:hasCode=["true" | "false"]
             android:hardwareAccelerated=["true" | "false"]
             android:icon="drawable resource"
             android:isGame=["true" | "false"]
             android:killAfterRestore=["true" | "false"]
             android:largeHeap=["true" | "false"]
             android:label="string resource"
             android:logo="drawable resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:networkSecurityConfig="xml resource"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:requiredAccountType="string"
             android:resizeableActivity=["true" | "false"]
             android:restrictedAccountType="string"
             android:supportsRtl=["true" | "false"]
             android:taskAffinity="string"
             android:testOnly=["true" | "false"]
             android:theme="resource or theme"
             android:uiOptions=["none" | "splitActionBarWhenNarrow"]
             android:usesCleartextTraffic=["true" | "false"]
             android:vmSafeMode=["true" | "false"] >
    . . .</application>

الواردة في:

<manifest>
يمكن أن تحتوي على:
<activity> 
<activity-alias> 
<meta-data> 
<service> 
<receiver> 
<provider> 
<uses-library>
وصف:
إعلان الطلب. يحتوي هذا العنصر على العناصر الفرعية التي تعلن كل مكون من مكونات التطبيق ولها سمات يمكن أن تؤثر على كافة المكونات. العديد من هذه الخصائص (مثل icon label permission process و taskAffinity و allowTaskReparenting ) تعيين القيم الافتراضية allowTaskReparenting المقابلة لعناصر المكون. غيرها (مثل debuggable ، enabled ، description ، و allowClearUserData ) تعيين قيم للتطبيق ككل ولا يمكن تجاوزها من قبل المكونات.
سمات
android:allowTaskReparenting
ما إذا كانت الأنشطة التي يحددها التطبيق يمكن أن تنتقل من المهمة التي بدأت إلى المهمة التي يكون لها تقارب عند إحضار هذه المهمة إلى الأمام - "true" إذا كان بإمكانها التحرك، و "false" إذا كانت يجب أن تبقى مع المهمة حيث بدأت. القيمة الافتراضية هي "false" .
يحتوي العنصر <activity> على allowTaskReparenting المميزة allowTaskReparenting التي يمكنها تجاوز القيمة المحددة هنا. راجع هذه السمة لمزيد من المعلومات.

android:allowBackup

سواء للسماح للتطبيق للمشاركة في النسخ الاحتياطي واستعادة البنية التحتية. إذا تم تعيين هذه السمة إلى فالس، لن يتم تنفيذ النسخ الاحتياطي أو استعادة التطبيق من أي وقت مضى، حتى من خلال النسخ الاحتياطي للنظام الكامل التي من شأنها أن تسبب خلاف ذلك جميع بيانات التطبيق ليتم حفظها عن طريق بنك التنمية الآسيوي. القيمة الافتراضية لهذه السمة ترو.
android:allowClearUserData
سواء للسماح للتطبيق بإعادة تعيين بيانات المستخدم. تتضمن هذه البيانات الأعلام - مثل ما إذا كان المستخدم قد شاهد تلميحات أدوات تمهيدية - بالإضافة إلى إعدادات وتفضيلات قابلة للتخصيص. القيمة الافتراضية لهذه السمة true .

ملاحظة: يمكن للتطبيقات التي هي جزء من صورة النظام فقط أن تعلن هذه السمة بشكل صريح. لا يمكن لتطبيقات الجهات الخارجية تضمين هذه السمة في ملفات البيان.


لمزيد من المعلومات، راجع استعادة بيانات المستخدم على الأجهزة الجديدة .


android:backupAgent

اسم الفئة التي تنفذ عامل النسخ الاحتياطي للتطبيق، فئة فرعية من BackupAgent . يجب أن تكون قيمة السمة اسم فئة مؤهل بالكامل (مثل، "com.example.project.MyBackupAgent" ). ومع ذلك، كختزال، إذا كان الحرف الأول للاسم هو فترة (على سبيل المثال، ".MyBackupAgent" )، يتم إلحاقه باسم الحزمة المحدد في العنصر <manifest> ".MyBackupAgent" <manifest> .
لا يوجد افتراضي. يجب تحديد الاسم.

android:backupInForeground

يشير إلى أن عمليات النسخ الاحتياطي التلقائي يمكن أن يؤديها على هذا التطبيق حتى لو كان التطبيق في حالة ما يعادل الأمامية. يقوم النظام بإيقاف تشغيل أحد التطبيقات أثناء عملية النسخ الاحتياطي التلقائي، لذا استخدم هذه السمة بحذر. يمكن أن يؤثر تعيين هذه العلامة على ترو في سلوك التطبيق أثناء تنشيط التطبيق.
القيمة الافتراضية هي false ، مما يعني أن نظام التشغيل سوف تجنب النسخ الاحتياطي التطبيق أثناء تشغيله في المقدمة (مثل التطبيق الموسيقى التي تلعب الموسيقى بنشاط عبر خدمة في startForeground() الدولة).

android:banner

مورد قابل للرسم يوفر لافتة رسومية موسعة للبند المرتبط بها. استخدم مع العلامة <application> لتزويد بانر افتراضي لجميع أنشطة التطبيق، أو باستخدام علامة <activity> لتوفير إعلان بانر لنشاط معين.
يستخدم النظام لافتة لتمثيل أحد التطبيقات في شاشة أندرويد تف الرئيسية. نظرا لأنه يتم عرض البانر فقط في الشاشة الرئيسية، يجب أن يتم تحديده فقط من خلال التطبيقات التي لها نشاط يتعامل مع القصد من CATEGORY_LEANBACK_LAUNCHER .

يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على الصورة (على سبيل المثال "@drawable/banner" ). لا يوجد لافتة افتراضية.


يمكنك الاطلاع على لافتات في أنماط واجهة المستخدم لدليل تصميم التلفزيون، وتوفير بانر للشاشة الرئيسية في الخطوات الأولى مع تطبيقات التلفزيون للحصول على مزيد من المعلومات.


android:debuggable

ما إذا كان أو لا يمكن تطبيق التصحيح، حتى عند تشغيل على جهاز في وضع المستخدم - "true" إذا كان يمكن أن يكون، و "false" إن لم يكن. القيمة الافتراضية هي "false" .
android:description
نص مقروء للمستخدم حول التطبيق، أطول وأكثر وصفية من تسمية التطبيق. يجب تعيين القيمة كمرجع لمورد سلسلة. على عكس التسمية، لا يمكن أن يكون سلسلة الخام. ليس هناك قيمة افتراضية.
android:directBootAware
ما إذا كان التطبيق هو التمهيد المباشر علم ؛ وهذا هو، ما إذا كان أو لا يمكن تشغيل قبل المستخدم يفتح الجهاز. إذا كنت تستخدم فئة فرعية مخصصة من Application ، وإذا كان أي مكون داخل التطبيق الخاص بك هو التمهيد المباشر على علم، ثم يعتبر التطبيق المخصص بأكمله ليكون على علم التمهيد المباشر.

ملاحظة: أثناء التمهيد المباشر ، يمكن للتطبيق الخاص بك الوصول فقط إلى البيانات التي يتم تخزينها في الجهاز المحمية التخزين.


القيمة الافتراضية هي "false" .


android:enabled

سواء أم لا نظام أندرويد يمكن أن فورنات مكونات التطبيق - "true" إذا كان يمكن، و "false" إن لم يكن. إذا كانت القيمة "true" ، فإن السمة التي تم تمكينها لكل مكون تحدد ما إذا كان هذا المكون ممكنا أم لا. إذا كانت القيمة "false" ، فإنه يتجاوز القيم الخاصة بالمكون؛ جميع المكونات معطلة.
القيمة الافتراضية هي "true" .

android:extractNativeLibs

ما إذا كان المثبت حزمة مقتطفات المكتبات الأصلية من أبك لنظام الملفات. إذا تم تعيينها على false ، فيجب أن تكون مكتباتك الأصلية محاذية للصفحة وتخزينها غير مضغوطة في ملف أبك. لا يلزم إجراء أي تغييرات في الشفرة نظرا لأن الرابط يؤدي إلى تحميل المكتبات مباشرة من ملف أبك في وقت التشغيل.
القيمة الافتراضية هي "true" .

android:fullBackupContent

تشير هذه السمة إلى ملف شمل يحتوي على قواعد النسخ الاحتياطي الكامل للنسخ الاحتياطي التلقائي . تحدد هذه القواعد الملفات التي يتم الاحتفاظ بنسخة احتياطية منها. لمزيد من المعلومات، راجع بناء جملة تكوين شمل للنسخ الاحتياطي التلقائي.
هذه السمة اختيارية. إذا لم يتم تحديده بشكل افتراضي، فإن التحميل التلقائي يتضمن معظم ملفات تطبيقك. لمزيد من المعلومات، راجع الملفات التي يتم الاحتفاظ بنسخة احتياطية منها .

android:fullBackupOnly

تشير هذه السمة إلى ما إذا كان سيتم استخدام النسخ الاحتياطي التلقائي على الأجهزة في حالة توفرها أم لا. إذا تم تعيينه على true ، فسيؤدي تطبيقك التحميل التلقائي عند تثبيته على جهاز يعمل بنظام التشغيل أندرويد 6.0 (مستوى واجهة برمجة التطبيقات 23) أو أعلى. على الأجهزة القديمة، يتجاهل تطبيقك هذه السمة وينفذ عمليات النسخ الاحتياطي الرئيسية / القيمة .
القيمة الافتراضية هي "false" .

android:hasCode

ما إذا كان التطبيق يحتوي على أي رمز - "true" إذا كان يفعل، و "false" إن لم يكن. عندما تكون القيمة "false" ، لا يحاول النظام تحميل أي رمز تطبيق عند إطلاق المكونات. القيمة الافتراضية هي "true" .
لن يكون للتطبيق أي رمز خاص به فقط إذا كان لا يستخدم أي شيء سوى فئات المكونات المضمنة، مثل النشاط الذي يستخدم فئة AliasActivity ، وهو أمر نادر الحدوث.

android:hardwareAccelerated

ما إذا كان ينبغي أو لا يمكن تسريع تقديم الأجهزة تمكين لجميع الأنشطة والآراء في هذا التطبيق - "true" إذا كان ينبغي تمكينه، و "false" إن لم يكن. القيمة الافتراضية هي "true" minSdkVersion "true" إذا قمت بتعيين minSdkVersion أو targetSdkVersion إلى "14" أو أعلى؛ خلاف ذلك، انها "false" .
بدءا من أندرويد 3.0 (مستوى واجهة برمجة التطبيقات 11)، يتوفر برنامج أوبنغل لتسريع الأجهزة للتطبيقات، لتحسين الأداء للعديد من عمليات الرسومات ثنائية الأبعاد الشائعة. عندما يتم تمكين العارض تسارع الأجهزة، يتم تسريع معظم العمليات في قماش، الطلاء، زفيرمود، كولورفيلتر، شادر، وكاميرا. وهذا يؤدي إلى الرسوم المتحركة أكثر سلاسة، والتمرير أكثر سلاسة، وتحسين الاستجابة بشكل عام، حتى بالنسبة للتطبيقات التي لا تستخدم بشكل واضح المكتبات أوبنغل الإطار.

لاحظ أنه لا يتم تسريع كافة عمليات برنامج أوبنغل 2D. إذا قمت بتمكين العارض المعجل بالأجهزة، فاختبر تطبيقك للتأكد من أنه يمكنه الاستفادة من العارض بدون أخطاء.


لمزيد من المعلومات، اقرأ دليل تسريع الأجهزة .


android:icon

رمز للتطبيق ككل، والرمز الافتراضي لكل من مكونات التطبيق. اطلع على سمات icon الفردي لعناصر <activity> و <activity-alias> و <service> و <receiver> و <provider> .
يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على الصورة (على سبيل المثال "@drawable/icon" ). لا يوجد رمز افتراضي.

android:isGame

أم لا التطبيق هو لعبة. قد يجمع النظام معا التطبيقات المصنفة كألعاب أو عرضها بشكل منفصل عن التطبيقات الأخرى.
الافتراضي هو false .

android:killAfterRestore

ما إذا كان يجب إنهاء التطبيق المعني بعد أن تم استعادة إعداداته أثناء عملية استعادة النظام بالكامل. لن تؤدي عمليات استعادة الحزمة الواحدة مطلقا إلى إيقاف تشغيل التطبيق. عمليات استعادة النظام الكامل عادة تحدث مرة واحدة فقط، عندما يتم إعداد الهاتف لأول مرة. لن تحتاج تطبيقات الجهات الخارجية عادة إلى استخدام هذه السمة.
الافتراضي هو true ، وهو ما يعني أنه بعد الانتهاء من معالجة بياناته أثناء استعادة النظام الكامل، سيتم إنهاء.

android:largeHeap

ما إذا كان ينبغي إنشاء عمليات التطبيق الخاص بك مع كومة دالفيك كبيرة. ينطبق هذا على كافة العمليات التي تم إنشاؤها للتطبيق. ينطبق فقط على التطبيق الأول تحميلها في عملية؛ إذا كنت تستخدم معرف مستخدم مشتركا للسماح لتطبيقات متعددة باستخدام عملية ما، فيجب أن يستخدم كل هذا الخيار بشكل متسق أو أنه سيكون له نتائج غير متوقعة.
يجب أن معظم التطبيقات لا تحتاج هذا وينبغي أن تركز بدلا من ذلك على الحد من استخدام الذاكرة بشكل عام لتحسين الأداء. تمكين هذا أيضا لا يضمن زيادة ثابتة في الذاكرة المتوفرة، لأن بعض الأجهزة مقيدة من إجمالي الذاكرة المتوفرة.

للاستعلام عن حجم الذاكرة المتوفرة في وقت التشغيل، استخدم أساليب getMemoryClass() أو getLargeMemoryClass() .


android:label

علامة قابلة للقراءة للمستخدم للتطبيق ككل، وتسمية افتراضية لكل مكون من مكونات التطبيق. اطلع على سمات label الفردية لعناصر <activity> و <activity-alias> و <service> و <receiver> و <provider> .
يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم. ومع ذلك، كراحة أثناء تطوير التطبيق، فإنه يمكن أيضا تعيين سلسلة الخام.

android:logo

شعار للتطبيق ككل، والشعار الافتراضي للأنشطة.
يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على الصورة (على سبيل المثال "@drawable/logo" ). لا يوجد شعار افتراضي.

android:manageSpaceActivity

الاسم المؤهل بالكامل للفئة الفرعية للنشاط التي يمكن للنظام تشغيلها للسماح للمستخدمين بإدارة الذاكرة التي يشغلها التطبيق على الجهاز. كما يجب أن يتم الإعلان عن <activity> باستخدام عنصر <activity> .
android:name
الاسم المؤهل بالكامل للفئة الفرعية Application تنفيذها للتطبيق. عند بدء تشغيل عملية التطبيق، يتم إنشاء هذه الفئة مثيل قبل أي من مكونات التطبيق.
الفئة الفرعية اختيارية. فإن معظم التطبيقات لا تحتاج واحدة. في حالة عدم وجود فئة فرعية، يستخدم الروبوت مثيل من الطبقة تطبيق قاعدة.

android:networkSecurityConfig

لتحديد اسم ملف شمل الذي يحتوي على تهيئة أمان الشبكة للتطبيق. يجب أن تكون القيمة مرجعا لملف شمل المصدر الذي يحتوي على التوصيف.

تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) 24.


android:permission

اسم إذن أن العملاء يجب أن يكون من أجل التفاعل مع التطبيق. هذه السمة هي طريقة مريحة لتعيين إذن ينطبق على كافة مكونات التطبيق. ويمكن الكتابة فوقه عن طريق تعيين سمات permission المكونات الفردية.
لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة ومستند آخر، الأمان و بيرميسيونس .

android:persistent

ما إذا كان ينبغي أن يظل التطبيق قيد التشغيل في جميع الأوقات - "true" إذا كان ينبغي، و "false" إن لم يكن. القيمة الافتراضية هي "false" . يجب ألا تضع التطبيقات هذه العلامة عادة؛ ويهدف وضع استمرار فقط لبعض تطبيقات النظام.
android:process
اسم عملية حيث يجب تشغيل كافة مكونات التطبيق. يمكن لكل مكون تجاوز هذا الإعداد الافتراضي من خلال تعيين سمة process الخاصة به.
بشكل افتراضي، يقوم أندرويد بإنشاء عملية لتطبيق عندما يحتاج أول مكوناته إلى التشغيل. ثم يتم تشغيل جميع المكونات في تلك العملية. يتطابق اسم العملية الافتراضية مع اسم الحزمة الذي تم تعيينه بواسطة العنصر <manifest> .

من خلال تعيين هذه السمة إلى اسم العملية التي تمت مشاركتها مع تطبيق آخر، يمكنك ترتيب مكونات كل من التطبيقات لتشغيل في نفس العملية - ولكن فقط إذا كان التطبيقين أيضا مشاركة هوية المستخدم ويتم توقيع مع نفس الشهادة.


إذا كان الاسم المعين لهذه السمة يبدأ بنقطتين (':')، يتم إنشاء عملية جديدة، خاصة إلى التطبيق، عند الحاجة إليها. إذا بدأ اسم العملية بحرف صغير، يتم إنشاء عملية عامة من هذا الاسم. ويمكن مشاركة عملية عالمية مع تطبيقات أخرى، مما يقلل من استخدام الموارد.


android:restoreAnyVersion

يشير إلى أنه تم إعداد التطبيق لمحاولة استعادة أية مجموعة بيانات مدعومة، حتى لو تم تخزين النسخة الاحتياطية بواسطة إصدار أحدث من التطبيق مما هو مثبت حاليا على الجهاز. سيؤدي تعيين هذه السمة إلى ترو إلى السماح لمدير النسخ الاحتياطي بمحاولة استعادة حتى عندما يشير عدم تطابق الإصدار إلى أن البيانات غير متوافقة. استخدم بحذر!
القيمة الافتراضية لهذه السمة هي false .

android:requiredAccountType

يحدد نوع الحساب المطلوب من قبل التطبيق من أجل العمل. إذا كان تطبيقك يتطلب Account ، فيجب أن تتوافق قيمة هذه السمة مع نوع مصادقة الحساب الذي يستخدمه تطبيقك (كما هو محدد بواسطة AuthenticatorDescription )، مثل "com.google".
القيمة الافتراضية خالية و تشير إلى أن التطبيق يمكن أن يعمل بدون أي حسابات.

ونظرا لأن الملفات الشخصية المقيدة حاليا لا يمكنها إضافة حسابات، فإن تحديد هذه السمة يجعل تطبيقك غير متاح من ملف شخصي مقيد ما لم تعلن أيضا android:restrictedAccountType بنفس القيمة.


تحذير: إذا كانت بيانات الحساب قد تكشف عن معلومات تعريف شخصية، فمن المهم أن تعلن هذه السمة وتترك android:restrictedAccountType كونستريكتدكونتتيب نول، بحيث لا يمكن استخدام الملفات الشخصية المقيدة استخدام تطبيقك للوصول إلى المعلومات الشخصية التي تخص مستخدم المالك.


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) رقم 18.


resizeableActivity

لتحديد ما إذا كان التطبيق يدعم عرض متعدد النوافذ أم لا . يمكنك تعيين هذه السمة في العنصر <activity> أو <application> .

إذا قمت بتعيين هذه السمة إلى ترو، يمكن للمستخدم تشغيل النشاط في أوضاع تقسيم الشاشة و فريفورم. إذا قمت بتعيين السمة إلى فالس، فإن النشاط لا يدعم وضع الإطار المتعدد. إذا كانت هذه القيمة كاذبة، ويحاول المستخدم إطلاق النشاط في وضع متعدد النوافذ، فإن النشاط يأخذ على كامل الشاشة.


إذا كان تطبيقك يستهدف مستوى واجهة برمجة التطبيقات 24 أو أعلى، ولكنك لا تحدد قيمة لهذه السمة، فستكون قيمة السمة افتراضية إلى ترو.


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) 24.


android:restrictedAccountType

يحدد نوع الحساب المطلوب بواسطة هذا التطبيق ويشير إلى أن الملفات الشخصية المقيدة مسموح لها بالوصول إلى هذه الحسابات التي تنتمي إلى مستخدم المالك. إذا كان تطبيقك يتطلب Account ويسمح للملفات الشخصية المقيدة بالوصول إلى حسابات المستخدم الأساسي، فيجب أن تتوافق قيمة هذه السمة مع نوع مصادقة الحساب المستخدم في تطبيقك (كما هو محدد بواسطة AuthenticatorDescription )، مثل "com.google".
القيمة الافتراضية خالية و تشير إلى أن التطبيق يمكن أن يعمل بدون أي حسابات.

تحذير: يتيح تحديد هذه السمة للملفات الشخصية المقيدة استخدام تطبيقك مع الحسابات التي تنتمي إلى مستخدم المالك، والتي قد تكشف عن معلومات تعريف شخصية. إذا كان الحساب قد يكشف عن تفاصيل شخصية، يجب عدم استخدام هذه السمة، ويجب عليك بدلا من ذلك أن تعلن عن السمة android:requiredAccountType ريكيردكونتتيب لجعل التطبيق غير متاح للملفات الشخصية المقيدة.


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) رقم 18.


android:supportsRtl

يعلن ما إذا كان طلبك مستعدا لدعم تخطيطات من اليمين إلى اليسار (رتل).
إذا تم تعيين إلى targetSdkVersion و targetSdkVersion تم تعيين إلى 17 أو أعلى، سيتم تفعيل مختلف واجهات برمجة التطبيقات رتل واستخدامها من قبل النظام بحيث التطبيق الخاص بك يمكن عرض تخطيطات رتل. إذا تم تعيين إلى targetSdkVersion أو إذا تم تعيين targetSdkVersion إلى 16 أو أقل، سيتم تجاهل واجهات برمجة التطبيقات رتل أو لن يكون لها تأثير وسوف التطبيق الخاص بك يتصرف نفسه بغض النظر عن اتجاه تخطيط المرتبطة اختيار اللغة المستخدم (سيتم ترك تخطيطات الخاص بك دائما -إلى اليمين).

القيمة الافتراضية لهذه السمة هي false .


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات 17.


android:taskAffinity

اسم تقارب ينطبق على جميع الأنشطة داخل التطبيق، باستثناء تلك التي تحدد تقارب مختلف مع سمات taskAffinity الخاصة بهم. راجع هذه السمة لمزيد من المعلومات.
بشكل افتراضي، تتشارك جميع الأنشطة ضمن أحد التطبيقات مع التقارب نفسه. اسم هذا التقارب هو نفس اسم الحزمة الذي تم تعيينه بواسطة العنصر <manifest> .

android:testOnly

يشير إلى ما إذا كان هذا التطبيق هو فقط لأغراض الاختبار. على سبيل المثال، قد يعرض وظيفة أو بيانات خارج نفسها من شأنها أن تسبب ثغرة أمنية، ولكنها مفيدة للاختبار. يمكن تثبيت هذا النوع من أبك فقط من خلال adb لا يمكن نشره إلى غوغل بلاي.
يضيف أندرويد ستوديو هذه السمة تلقائيا عند النقر على تشغيل  .

android:theme

إشارة إلى مورد نمط يحدد سمة افتراضية لجميع الأنشطة في التطبيق. يمكن للأنشطة الفردية تجاوز الافتراضي عن طريق تعيين سمات theme الخاصة بهم. لمزيد من المعلومات، راجع دليل مطوري الأنماط والموضوعات .
android:uiOptions
خيارات إضافية لواجهة مستخدم النشاط.
يجب أن يكون أحد القيم التالية.
ValueDescription
"none"No extra UI options. This is the default.
"splitActionBarWhenNarrow"Add a bar at the bottom of the screen to display action items in the app bar (also known as theaction bar), when constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small number of action items appearing in the app bar at the top of the screen, the app bar is split into the top navigation section and the bottom bar for action items. This ensures a reasonable amount of space is made available not only for the action items, but also for navigation and title elements at the top. Menu items are not split across the two bars; they always appear together.
القيمة وصف
"none" لا توجد خيارات واجهة مستخدم إضافية. هذا هو الإعداد الافتراضي.
"splitActionBarWhenNarrow" إضافة شريط في الجزء السفلي من الشاشة لعرض عناصر العمل في شريط التطبيق (المعروف أيضا باسم شريط العمل )، عندما مقيدة لمساحة أفقية (مثل عندما تكون في وضع عمودي على الهاتف). بدلا من عدد قليل من عناصر الإجراءات التي تظهر في شريط التطبيق في الجزء العلوي من الشاشة، يتم تقسيم شريط التطبيق إلى قسم التنقل العلوي والشريط السفلي لعناصر العمل. وهذا يضمن توفير قدر معقول من المساحة ليس فقط لبنود العمل، ولكن أيضا لعناصر الملاحة والعنوان في الجزء العلوي. لا يتم تقسيم عناصر القائمة عبر القضبان؛ فإنها تظهر دائما معا.
لمزيد من المعلومات حول شريط التطبيق، راجع فئة تدريب إضافة شريط التطبيقات .

لمزيد من المعلومات حول شريط التطبيق، راجع فئة تدريب إضافة شريط التطبيقات .


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) 14.


android:usesCleartextTraffic

يشير إلى ما إذا كان التطبيق يعتزم استخدام حركة مرور الشبكة النص واضح، مثل النص المتشعب هتب. القيمة الافتراضية هي "true" .
عندما يتم تعيين السمة إلى "false" ، مكونات النظام الأساسي (على سبيل المثال، هتب و فتب مداخن، MediaPlayer ، MediaPlayer ) سوف ترفض طلبات التطبيق لاستخدام حركة النص بوضوح. وتشجع مكتبات الطرف الثالث بقوة على احترام هذا الإعداد أيضا. السبب الرئيسي لتفادي حركة النص المؤقت هو عدم وجود السرية، والأصالة، والحماية من العبث: يمكن لمهاجم الشبكة التنصت على البيانات المنقولة وأيضا تعديله دون الكشف عنها.

يتم تكريم هذا العلم على أساس جهد أفضل لأنه من المستحيل لمنع كل حركة المرور نص واضح من تطبيقات الروبوت نظرا لمستوى الوصول المقدمة لهم. على سبيل المثال، ليس هناك توقع بأن واجهة برمجة تطبيقات Socket ستحترم هذه العلامة لأنها لا تستطيع تحديد ما إذا كانت حركة المرور في نص واضح. ومع ذلك، فإن معظم حركة مرور الشبكة من التطبيقات يتم التعامل معها من خلال مداخن / مكونات الشبكة ذات المستوى الأعلى التي يمكن أن تحترم هذه العلامة إما بقراءتها من ApplicationInfo.flags أو NetworkSecurityPolicy.isCleartextTrafficPermitted() .


ملاحظة: لا WebView هذه العلامة.


خلال تطوير التطبيق، ستريكتمود يمكن استخدامها لتحديد أي حركة نصوص واضحة من التطبيق: انظر StrictMode.VmPolicy.Builder.detectCleartextNetwork() .


تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات 23.


يتم تجاهل هذا العلم على الروبوت 7.0 (أبي مستوى 24) وما فوق إذا كان الروبوت تكوين شبكة الأمان موجود.


android:vmSafeMode

يشير إلى ما إذا كان التطبيق يريد الجهاز الظاهري (فم) للعمل في الوضع الآمن. القيمة الافتراضية هي "false" .
تمت إضافة هذه السمة في مستوى أبي 8 حيث تم تعطيل قيمة "ترو" معجم دالفيك فقط في الوقت (جيت).

تم تكييف هذه السمة في مستوى أبي 22 حيث قيمة "صحيح" تعطيل آرت في وقت مبكر (أوت) مترجم.


قدم في:

أبي ليفيل 1
أنظر أيضا:
<activity> 
<service> 
<receiver> 
<provider>




<فئة>

بناء الجملة:

<category>

SYNTAX:
<category android:name="string" />
الواردة في:
<intent-filter>


وصف:

لإضافة اسم فئة إلى فلتر القصد. انظر النوايا والنوايا مرشحات للحصول على تفاصيل عن مرشحات القصد ودور مواصفات الفئة داخل مرشح.
الصفات:
android:name
اسم الفئة. يتم تعريف الفئات القياسية في فئة CATEGORY_ name الثوابت CATEGORY_ name . يمكن استخلاص الاسم المحدد هنا من تلك الثوابت عن طريق البادئة " android.intent.category. " إلى name الذي يلي CATEGORY_ . على سبيل المثال، قيمة السلسلة ل CATEGORY_LAUNCHER هي " android.intent.category.LAUNCHER ".
ملاحظة: لتلقي النوايا الضمنية، يجب تضمين CATEGORY_DEFAULT في عامل التصفية المقصود. أساليب startActivity() و startActivityForResult() معالجة جميع النوايا كما لو أعلنت الفئة CATEGORY_DEFAULT . إذا كنت لا تعلن ذلك في مرشح القصد الخاص بك، لن النوايا الضمنية حل لنشاطك.

يجب أن تستخدم الفئات المخصصة اسم الحزمة كبادئة، للتأكد من أنها فريدة من نوعها.


قدم في:

أبي ليفيل 1
أنظر أيضا:
<action> 
<data>



--------------------------




<شاشات متوافقة>

بناء الجملة:


<compatible-screens>

SYNTAX:
<compatible-screens>
    <screen android:screenSize=["small" | "normal" | "large" | "xlarge"]
            android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"
                                   | "280" | "360" | "420" | "480" | "560" ] />
    ...</compatible-screens>


الواردة في:

<manifest>
وصف:
يحدد كل تهيئة شاشة متوافق معها التطبيق. لا يسمح إلا بمرة واحدة فقط من عنصر <compatible-screens> في البيان، ولكنها قد تحتوي على عدة عناصر <screen> . يحدد كل عنصر من عناصر <screen> مجموعة معينة من كثافة حجم الشاشة التي يتوافق معها التطبيق.
نظام أندرويد لا يقرأ <compatible-screens> عنصر البيان (لا في وقت التثبيت ولا في وقت التشغيل). هذا العنصر هو معلومات فقط ويمكن استخدامه من قبل الخدمات الخارجية (مثل غوغل بلاي) لفهم أفضل للتوافق التطبيق مع تكوينات الشاشة محددة وتمكين تصفية للمستخدمين. أي تكوين الشاشة التي لم يتم الإعلان عنها في هذا العنصر هو الشاشة التي التطبيق غير متوافق. وبالتالي، يجب على الخدمات الخارجية (مثل جوجل بلاي) لا توفر التطبيق إلى الأجهزة مع مثل هذه الشاشات.

تحذير: عادة، يجب عدم استخدام عنصر البيان هذا . استخدام هذا العنصر يمكن أن تقلل بشكل كبير من قاعدة المستخدمين المحتملين للتطبيق الخاص بك، من خلال عدم السماح للمستخدمين لتثبيت التطبيق الخاص بك إذا كان لديهم جهاز مع تكوين الشاشة التي لم تكن مدرجة. يجب عليك استخدامه فقط كملاذ أخير، عندما التطبيق لا يعمل على الاطلاق مع تكوينات الشاشة محددة. بدلا من استخدام هذا العنصر، يجب اتباع دليل دعم شاشات متعددة لتوفير دعم قابلة للتطوير لشاشات متعددة باستخدام تخطيطات بديلة والصور النقطية لأحجام وشاشات مختلفة الشاشة.


إذا كنت ترغب في تعيين الحد الأدنى من حجم الشاشة للتطبيق الخاص بك، ثم يجب عليك استخدام عنصر <supports-screens> . على سبيل المثال، إذا كنت تريد أن يكون تطبيقك متاحا فقط لأجهزة الشاشة الكبيرة والشاشة الكبيرة ، فإن عنصر <supports-screens> سوبورتس-سكرينز <supports-screens> يسمح لك بإعلان أن تطبيقك لا يدعم أحجام الشاشة الصغيرة أو العادية . ستؤدي الخدمات الخارجية (مثل غوغل بلاي) إلى تصفية تطبيقك وفقا لذلك. يمكنك أيضا استخدام عنصر <supports-screens> لتحديد ما إذا كان يجب على النظام تغيير حجم تطبيقك لأحجام مختلفة للشاشة.


اطلع أيضا على مستند الفلاتر على غوغل بلاي للحصول على مزيد من المعلومات حول كيفية تصفية غوغل بلاي للتطبيقات التي تستخدم هذا العنصر وعناصر البيان الأخرى.


عناصر الطفل:

<screen>
يحدد تكوين شاشة واحدة متوافق مع التطبيق.
يجب وضع حالة واحدة على الأقل من هذا العنصر داخل العنصر <compatible-screens> . يجب أن يتضمن هذا العنصر كلا من android:screenSize و android:screenDensity سمات (إذا كنت لا تعلن كل من سمات، ثم يتم تجاهل العنصر).

الصفات:


android:screenSize

مطلوب. لتحديد حجم الشاشة لتكوين هذه الشاشة.
القيم المقبولة:

small

normal
large
xlarge
للحصول على معلومات حول أحجام الشاشة المختلفة، راجع دعم شاشات متعددة .

android:screenDensity

مطلوب. لتحديد كثافة الشاشة لتكوين الشاشة هذا.
القيم المقبولة:

"ldpi" (حوالي 120 نقطة في البوصة)

"mdpi" (حوالي 160 نقطة في البوصة)
"hdpi" (حوالي 240 نقطة في البوصة)
"xhdpi" (حوالي 320 نقطة في البوصة)
"280"
"360"
"420"
"480"
"560"
للحصول على معلومات حول كثافة الشاشة المختلفة، راجع دعم شاشات متعددة .

مثال

إذا كان تطبيقك متوافقا مع الشاشات الصغيرة والعادية فقط، بغض النظر عن كثافة الشاشة، فيجب عليك تحديد اثني عشر عنصرا مختلفا من <screen> ، لأن كل حجم شاشة يحتوي على ستة تكوينات مختلفة للكثافة. يجب أن تعلن كل واحد من هذه؛ يعتبر أي مزيج من الحجم والكثافة التي لا تحددها تكوين الشاشة التي التطبيق الخاص بك غير متوافق. إليك ما يبدو عليه إدخال البيان إذا كان تطبيقك متوافقا مع الشاشات الصغيرة والعادية فقط:




<manifest ... >
    ...
    <compatible-screens>
        <!-- all small size screens -->
        <screen android:screenSize="small" android:screenDensity="ldpi" />
        <screen android:screenSize="small" android:screenDensity="mdpi" />
        <screen android:screenSize="small" android:screenDensity="hdpi" />
        <screen android:screenSize="small" android:screenDensity="xhdpi" />
        <screen android:screenSize="small" android:screenDensity="xxhdpi" />
        <screen android:screenSize="small" android:screenDensity="xxxhdpi" />
        <!-- all normal size screens -->
        <screen android:screenSize="normal" android:screenDensity="ldpi" />
        <screen android:screenSize="normal" android:screenDensity="mdpi" />
        <screen android:screenSize="normal" android:screenDensity="hdpi" />
        <screen android:screenSize="normal" android:screenDensity="xhdpi" />
        <screen android:screenSize="normal" android:screenDensity="xxhdpi" />
        <screen android:screenSize="normal" android:screenDensity="xxxhdpi" />
    </compatible-screens>
    <application ... >
        ...
    <application>
</manifest>



قدم في:

أبي ليفيل 9
أنظر أيضا:
دعم شاشات متعددة
الفلاتر على غوغل بلاي




----------------------------------



<البيانات>

بناء الجملة:


<data>

SYNTAX:
<data android:scheme="string"
      android:host="string"
      android:port="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:mimeType="string" />

الواردة في:

<intent-filter>
وصف:
لإضافة مواصفات بيانات إلى عامل تصفية القصد. يمكن أن تكون المواصفات مجرد نوع بيانات (السمة mimeType )، أوري فقط، أو كل من نوع البيانات و أوري. يتم تحديد عنوان أوري بواسطة سمات منفصلة لكل جزء من أجزاءه:
<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]

هذه السمات التي تحدد تنسيق عنوان ورل اختيارية، ولكنها تعتمد أيضا على بعضها البعض:


إذا لم يتم تحديد scheme لمرشح القصد، يتم تجاهل كافة سمات أوري الأخرى.

إذا لم يتم تحديد host للمرشح يتم تجاهل سمة port وجميع سمات المسار.
تساهم جميع عناصر <data> الموجودة ضمن عنصر <intent-filter> نفسه في الفلتر نفسه. لذلك، على سبيل المثال، مواصفات الفلتر التالية،



<intent-filter . . . >
    <data android:scheme="something" android:host="project.example.com" />
    . . .</intent-filter>
 ما يعادل هذا واحد:

:
<intent-filter . . . >
    <data android:scheme="something" />
    <data android:host="project.example.com" />
    . . .</intent-filter>



يمكنك وضع أي عدد من عناصر <intent-filter> <data> داخل <intent-filter> لإعطائه خيارات بيانات متعددة. لا تحتوي أي من سماتها على قيم افتراضية.


معلومات عن كيفية عمل مرشحات نوايا، بما في ذلك قواعد لكيفية مطابقة الكائنات إنتنت ضد المرشحات، يمكن العثور عليها في مستند آخر، النوايا والمقصود النوايا . أنظر أيضا قسم إنتنت فيلترس في نظرة عامة على ملف البيان.


الصفات:

android:scheme
جزء المخطط من عنوان أوري. هذه هي السمة الأساسية الدنيا لتحديد أوري؛ يجب تعيين سمة scheme واحد على الأقل scheme أو لا تكون سمات أوري الأخرى ذات مغزى.
يتم تحديد مخطط بدون القولون الزائد (على سبيل المثال، http ، بدلا من http: .

إذا كان عامل التصفية يحتوي على نوع نوع البيانات (السمة mimeType ) ولكن لا مخطط، يتم افتراض content: file: المخططات.


ملاحظة : مخطط مطابقة في إطار الروبوت حساسة لحالة الأحرف، على عكس رك. ونتيجة لذلك، يجب عليك دائما تحديد المخططات باستخدام أحرف صغيرة.


android:host

الجزء المضيف لسلطة أوري. هذه السمة لا معنى لها ما لم يتم تحديد سمة scheme أيضا للفلتر. لمطابقة نطاقات فرعية متعددة، استخدم علامة نجمية ( * ) لمطابقة الصفر أو أكثر من الأحرف في المضيف. على سبيل المثال، يتطابق المضيف *.google.com مع www.google.com و .google.com و developer.google.com .
يجب أن تكون العلامة النجمية هي الحرف الأول للخاصية المميزة للمضيف. على سبيل المثال، المضيف google.co.* غير صالح لأن حرف البدل النجمة ليس الحرف الأول.

ملاحظة : مطابقة اسم المضيف في إطار أندرويد حساسة لحالة الأحرف، على عكس رك الرسمية. ونتيجة لذلك، يجب عليك دائما تحديد أسماء المضيفين باستخدام أحرف صغيرة.


android:port

جزء المنفذ لسلطة أوري. هذه السمة ذات معنى فقط إذا تم تحديد سمات scheme host أيضا للفلتر.
android:path 
android:pathPrefix 
android:pathPattern
جزء المسار من معرف أوري الذي يجب أن يبدأ ب /. تحدد السمة باث مسار كامل يطابق المسار الكامل في كائن إنتنت. تحدد السمة pathPrefix مسارا جزئيا يطابق فقط الجزء الأولي من المسار في الكائن إنتنت. تحدد السمة pathPattern المسار الكامل المتطابق مع المسار الكامل في الكائن إنتنت، ولكن يمكن أن تحتوي على الأحرف البدل التالية:
تتطابق العلامة النجمية (' * ') مع تسلسل من 0 إلى العديد من حالات الحرف السابق مباشرة.
وتتطابق الفترة التي تليها علامة النجمة (" .* ") مع أي تسلسل من 0 إلى العديد من الأحرف.
لأن ' \ ' يستخدم كحرف هروب عندما يتم قراءة السلسلة من شمل (قبل تحليلها كنمط)، سوف تحتاج إلى الهروب المزدوج: على سبيل المثال، حرفيا ' * ' ستكتب على أنها " \\* "و حرفيا ' \ ' ستكتب على أنها" \\\\ ". هذا هو في الأساس نفس ما كنت بحاجة إلى الكتابة إذا بناء سلسلة في التعليمات البرمجية جافا.

لمزيد من المعلومات حول هذه الأنواع الثلاثة من الأنماط، راجع أوصاف PATTERN_LITERAL و PATTERN_PREFIX و PATTERN_SIMPLE_GLOB في فئة PatternMatcher .


هذه السمات ذات معنى فقط إذا تم تحديد سمات scheme host أيضا للفلتر.


android:mimeType

نوع الوسائط مايم، مثل image/jpeg أو audio/mpeg4-generic . يمكن أن يكون النوع الفرعي حرف البدل النجمة ( * ) للإشارة إلى أن أي نوع فرعي يطابق.
من الشائع لمرشح نية أن يعلن عن <data> android:mimeType <data> يتضمن فقط السمة android:mimeType .

ملاحظة : مطابقة نوع مايم في إطار أندرويد حساسة لحالة الأحرف، على عكس الأنواع الرسمية لماك رك. ونتيجة لذلك، يجب عليك دائما تحديد أنواع مايم باستخدام أحرف صغيرة.


قدم في:

أبي ليفيل 1
أنظر أيضا:
<action> 
<category>


-----------------------------------------





<المنح أوري إذن>

بناء الجملة:



<grant-uri-permission>

SYNTAX:
<grant-uri-permission android:path="string"
                      android:pathPattern="string"
                      android:pathPrefix="string" />



الواردة في:

<provider>
وصف:
لتحديد أي مجموعات فرعية للبيانات من إذن موفر المحتوى الأصلي يمكن منحها. يشار إلى مجموعات البيانات الفرعية بواسطة جزء المسار content: أوري. (يحدد جزء السلطة من أوري موفر المحتوى.) منح الإذن هو وسيلة لتمكين عملاء مزود الخدمة الذين لا يحصلون عادة على إذن للوصول إلى بياناته للتغلب على هذا التقييد على أساس مرة واحدة.
إذا كانت سمة grantUriPermissions لموفر المحتوى هي " grantUriPermissions "، فيمكن منح الإذن لأي بيانات ضمن نطاق مقدم الخدمة. ومع ذلك، إذا كانت هذه السمة " false "، يمكن منح الإذن فقط للمجموعات الفرعية للبيانات التي تم تحديدها بواسطة هذا العنصر. يمكن أن يحتوي مقدم الخدمة على أي عدد من عناصر <grant-uri-permission> . يمكن لكل واحد تحديد مسار واحد فقط (واحد فقط من ثلاث سمات ممكنة).

للحصول على معلومات حول كيفية منح الإذن، راجع سمة grantUriPermissions <intent-filter> grantUriPermissions <intent-filter> للعنصر.


الصفات:

android:path 
android:pathPrefix 
android:pathPattern
مسار يحدد مجموعة البيانات الفرعية أو المجموعات الفرعية التي يمكن منح الإذن لها. تحدد السمة باث مسارا كاملا؛ يمكن منح الإذن فقط لمجموعة البيانات الفرعية المحددة التي يحددها هذا المسار. تحدد السمة pathPrefix الجزء الأولي من مسار؛ يمكن منح الإذن لكافة مجموعات البيانات الفرعية مع المسارات التي تشترك في الجزء الأولي. تحدد السمة pathPattern مسارا كاملا، ولكن المسار الذي يمكن أن يحتوي على pathPattern البدل التالية:
تتطابق العلامة النجمية (' * ') مع تسلسل من 0 إلى العديد من حالات الحرف السابق مباشرة.
وتتطابق الفترة التي تليها علامة النجمة (" .* ") مع أي تسلسل من 0 إلى العديد من الأحرف.
لأن ' \ ' يستخدم كحرف هروب عندما يتم قراءة السلسلة من شمل (قبل تحليلها كنمط)، سوف تحتاج إلى الهروب المزدوج: على سبيل المثال، حرفيا ' * ' ستكتب على أنها " \\* "و حرفيا ' \ ' ستكتب على أنها" \\\\ ". هذا هو في الأساس نفس ما كنت بحاجة إلى الكتابة إذا بناء سلسلة في التعليمات البرمجية جافا.

لمزيد من المعلومات حول هذه الأنواع من الأنماط، راجع أوصاف PATTERN_LITERAL و PATTERN_PREFIX و PATTERN_SIMPLE_GLOB في فئة PatternMatcher .


قدم في:

أبي ليفيل 1
أنظر أيضا:
سمة grantUriPermissions <provider>



---------------------------------------------------------



<الأجهزة>

بناء الجملة:


<instrumentation>

SYNTAX:
<instrumentation android:functionalTest=["true" | "false"]
                 android:handleProfiling=["true" | "false"]
                 android:icon="drawable resource"
                 android:label="string resource"
                 android:name="string"
                 android:targetPackage="string" />


الواردة في:

<manifest>
وصف:
يعلن فئة Instrumentation التي تمكنك من مراقبة تفاعل التطبيق مع النظام. هو مثبت كائن الأجهزة قبل أي من مكونات التطبيق.
الصفات:
android:functionalTest
ما إذا كان ينبغي تشغيل فئة الأجهزة كاختبار وظيفي أم لا - " true " إذا كان ينبغي، و " false " إن لم يكن. القيمة الافتراضية هي " false ".
android:handleProfiling
ما إذا كان الكائن أداة سوف تتحول التنميط داخل وخارج - " true " إذا كان يحدد عندما يبدأ التنميط ويتوقف، و " false " إذا كان التنميط يستمر طوال الوقت الذي يتم تشغيله. قيمة " true " تمكن الكائن من استهداف التنميط في مجموعة محددة من العمليات. القيمة الافتراضية هي " false ".
android:icon
رمز يمثل فئة الأجهزة. يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم.
android:label
تسمية قابلة للقراءة من قبل المستخدم لفئة الأجهزة. يمكن تعيين التسمية كسلسلة خام أو مرجع لمورد سلسلة.
android:name
اسم الفئة الفرعية Instrumentation . يجب أن يكون هذا اسم فئة مؤهل بالكامل (مثل، " com.example.project.StringInstrumentation "). ومع ذلك، باعتباره الاختزال، إذا كان الحرف الأول من الاسم هو فترة، يتم إلحاقه باسم الحزمة المحدد في العنصر <manifest> .
لا يوجد افتراضي. يجب تحديد الاسم.

android:targetPackage

التطبيق الذي سيتم تشغيل كائن الأجهزة ضد. يتم التعرف على التطبيق من خلال اسم الحزمة المعين في ملف البيان الخاص به من خلال العنصر <manifest> .
قدم في:
أبي ليفيل 1


-------------------------------------------------------------------------------------------------



<نية تصفية>

بناء الجملة:



<intent-filter>

SYNTAX:
<intent-filter android:icon="drawable resource"
               android:label="string resource"
               android:priority="integer" >
    . . .</intent-filter>


الواردة في:

<activity> 
<activity-alias> 
<service> 
<receiver>
يجب أن تحتوي على:
<action>
يمكن أن تحتوي على:
<category> 
<data>
وصف:
يحدد أنواع النوايا التي يمكن أن يستجيب لها نشاط أو خدمة أو مستقبل بث. ويعلن مرشاح النوايا إمكانات المكون الرئيسي - ما الذي يمكن أن يفعله أي نشاط أو خدمة وما هي أنواع البث التي يمكن أن يتلقاها المستقبل. فإنه يفتح المكون لتلقي النوايا من نوع المعلن عنها، في حين تصفية تلك التي ليست ذات مغزى للمكون.
يتم وصف معظم محتويات الفلتر من خلال <category> و <data> كاتيغوري <data> و <data> داتا <data> الفرعية.

للحصول على مناقشة أكثر تفصيلا للمرشحات، اطلع على وثيقة الفلاتر والنوايا المستقلة، وكذلك قسم فلاتر النوايا في المقدمة.


الصفات:

android:icon
رمز يمثل النشاط الأصل أو الخدمة أو مستقبل البث عندما يتم تقديم هذا المكون إلى المستخدم على أنه يمتلك القدرة الموصوفة بواسطة الفلتر.
يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة. القيمة الافتراضية هي الرمز الذي تم تعيينه بواسطة سمة icon المكون الرئيسي. إذا لم يحدد الوالد رمز، يكون الافتراضي هو الرمز الذي تم تعيينه بواسطة عنصر <application> .

لمزيد من المعلومات حول رموز تصفية النوايا، راجع الأيقونات والتصنيفات في المقدمة.


android:label

تصنيف قابل للقراءة للمستخدم للمكون الأصلي. يستخدم هذا التسمية، بدلا من التسمية التي تم تعيينها بواسطة المكون الأصلي، عندما يتم تقديم المكون إلى المستخدم على أنه يمتلك القدرة الموصوفة بواسطة الفلتر.
يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم. ومع ذلك، كراحة أثناء تطوير التطبيق، فإنه يمكن أيضا تعيين سلسلة الخام.

القيمة الافتراضية هي التسمية التي تم تعيينها بواسطة المكون الأصلي. إذا لم يحدد الوالد تصنيفا، يكون الإعداد الافتراضي هو التصنيف الذي تم تعيينه بواسطة السمة label <application> .


لمزيد من المعلومات عن بطاقات تصفية النوايا، اطلع على الأيقونات والتصنيفات في المقدمة.


android:priority

الأولوية التي ينبغي أن تعطى للمكون الأصلي فيما يتعلق التعامل مع النوايا من النوع الذي وصفه المرشح. ولهذه السمة معنى لكل من الأنشطة ومستقبلات البث:
وهي توفر معلومات حول مدى قدرة النشاط على الاستجابة لنية تتطابق مع المرشح، بالنسبة إلى الأنشطة الأخرى التي يمكن أن تستجيب أيضا للنية. عندما يمكن التعامل مع نية من قبل أنشطة متعددة مع أولويات مختلفة، فإن الروبوت تنظر فقط تلك التي لها قيم أولوية أعلى كأهداف محتملة للنية.
وهي تسيطر على الترتيب الذي يتم فيه تنفيذ مستقبلات البث لتلقي رسائل البث. وتسمى تلك التي لها قيم أولوية أعلى قبل تلك التي لها قيم أقل. (ينطبق الأمر على الرسائل المتزامنة فقط؛ ويتم تجاهله للرسائل غير المتزامنة.)
استخدام هذه السمة فقط إذا كنت حقا بحاجة لفرض ترتيب معين التي يتم تلقي البث، أو تريد أن تجبر الروبوت على تفضيل نشاط واحد على الآخرين.

يجب أن تكون القيمة عددا صحيحا، مثل " 100 ". الأرقام العليا لها أولوية أعلى. القيمة المفترضة هي 0. يجب أن تكون القيمة أكبر من -1000 وأقل من 1000.


انظر أيضا setPriority() .


قدم في:

أبي ليفيل 1
أنظر أيضا:
<action> 
<category> 
<data>


----------------------------------


<واضح>

بناء الجملة




<manifest>

SYNTAX:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    . . .</manifest>


الواردة في:

لا شيء
يجب أن تحتوي على:
<application>
يمكن أن تحتوي على:
<compatible-screens> 
<instrumentation> 
<permission> 
<permission-group> 
<permission-tree> 
<supports-gl-texture> 
<supports-screens> 
<uses-configuration> 
<uses-feature> 
<uses-permission> 
<uses-permission-sdk-23> 
<uses-sdk>
وصف:
عنصر الجذر من ملف AndroidManifest.xml. يجب أن يحتوي على عنصر <application> وحدد xmlns:android سمات xmlns:android و باكيج.
الصفات:
xmlns:android
يحدد مساحة اسم أندرويد. يجب تعيين هذه السمة دائما على " http://schemas.android.com/apk/res/android ".
package
اسم حزمة كامل بلغة لغة جافا لتطبيق أندرويد. يجب أن يكون الاسم فريدا. قد يحتوي الاسم على أحرف كبيرة أو صغيرة ('A' من خلال 'Z') والأرقام والشرطات السفلية ('_'). ومع ذلك، قد تبدأ أجزاء اسم الحزمة الفردية فقط مع الحروف.
لتجنب حدوث تعارضات مع مطوري البرامج الآخرين، يجب عليك استخدام ملكية نطاق الإنترنت كأساس لأسماء الطرود (في الاتجاه المعاكس). على سبيل المثال، تبدأ التطبيقات التي تنشرها غوغل مع com.google . يجب أيضا عدم استخدام مساحة الاسم com.example عند نشر التطبيقات الخاصة بك.

اسم الحزمة بمثابة معرف فريد للتطبيق. كما أنه الاسم الافتراضي لعملية التطبيق (راجع سمة عملية process <activity> taskAffinity <activity> عنصر) والتقارب الافتراضي للمهمة لنشاط ما (راجع سمة taskAffinity <activity> عنصر).


تنبيه: بمجرد نشر التطبيق الخاص بك، لا يمكنك تغيير اسم الحزمة . يعرف اسم الحزمة هوية التطبيق الخاص بك، لذلك إذا قمت بتغييره، فإنه يعتبر تطبيق مختلف ومستخدمي الإصدار السابق لا يمكن تحديث إلى الإصدار الجديد.


android:sharedUserId

اسم معرف مستخدم لينوكس الذي سيتم مشاركته مع التطبيقات الأخرى. بشكل افتراضي، يعين أندرويد كل تطبيق معرف المستخدم الفريد الخاص به. ومع ذلك، إذا تم تعيين هذه السمة إلى نفس القيمة لتطبيقين أو أكثر، فسيشاركون جميعا نفس المعرف - شريطة أن تكون مجموعات الشهادات متطابقة. يمكن للتطبيقات التي لها نفس معرف المستخدم الوصول إلى بيانات بعضها البعض، وإذا رغبت في ذلك، يتم تشغيلها في نفس العملية.
android:sharedUserLabel
تصنيف قابل للقراءة للمستخدم لمعرف المستخدم المشترك. يجب تعيين التسمية كمرجع لمورد سلسلة؛ لا يمكن أن يكون سلسلة الخام.
تم إدخال هذه السمة في أبي ليفيل 3. ومن المفيد فقط إذا تم sharedUserId السمة sharedUserId أيضا.

android:versionCode

رقم إصدار داخلي. يستخدم هذا الرقم فقط لتحديد ما إذا كان إصدار واحد أكثر حداثة من إصدار آخر، مع وجود أرقام أعلى تشير إلى الإصدارات الأحدث. هذا ليس رقم الإصدار المعروض للمستخدمين؛ يتم تعيين هذا الرقم بواسطة السمة versionName .
يجب تعيين القيمة على أنها عدد صحيح، مثل "100". يمكنك تعريف ذلك ولكن تريد، طالما أن كل نسخة متتالية لديها عدد أعلى. على سبيل المثال، يمكن أن يكون رقم بناء. أو يمكنك ترجمة رقم الإصدار بتنسيق "زي" إلى عدد صحيح عن طريق ترميز "x" و "y" بشكل منفصل في البتات 16 والسفلى الأدنى. أو يمكنك ببساطة زيادة عدد واحد في كل مرة يتم إصدار نسخة جديدة.

android:versionName

رقم الإصدار المعروض للمستخدمين. يمكن تعيين هذه السمة كسلسلة خام أو كمرجع لمورد سلسلة. السلسلة ليس لها أي غرض آخر من أن يتم عرضها للمستخدمين. تحمل السمة versionCode رقم الإصدار الهام المستخدم داخليا.
android:installLocation
موقع التثبيت الافتراضي للتطبيق.
يتم قبول سلاسل الكلمات الرئيسية التالية:
ValueDescription
"internalOnly"The application must be installed on the internal device storage only. If this is set, the application will never be installed on the external storage. If the internal storage is full, then the system will not install the application. This is also the default behavior if you do not define android:installLocation.
"auto"The application may be installed on the external storage, but the system will install the application on the internal storage by default. If the internal storage is full, then the system will install it on the external storage. Once installed, the user can move the application to either internal or external storage through the system settings.
"preferExternal"The application prefers to be installed on the external storage (SD card). There is no guarantee that the system will honor this request. The application might be installed on internal storage if the external media is unavailable or full. Once installed, the user can move the application to either internal or external storage through the system settings.
القيمة وصف
" internalOnly " يجب تثبيت التطبيق على جهاز التخزين الداخلي فقط. إذا تم تعيين هذا، لن يتم تثبيت التطبيق على وحدة التخزين الخارجية. إذا كانت وحدة التخزين الداخلية ممتلئة، فلن يقوم النظام بتثبيت التطبيق. هذا هو أيضا السلوك الافتراضي إذا كنت لا تعرف android:installLocation .
" auto " قد يتم تثبيت التطبيق على وحدة التخزين الخارجية، ولكن سيقوم النظام بتثبيت التطبيق على وحدة التخزين الداخلية بشكل افتراضي. إذا كان التخزين الداخلي ممتلئا، ثم سيقوم النظام بتثبيته على وحدة التخزين الخارجية. وبمجرد تركيب، يمكن للمستخدم نقل التطبيق إما التخزين الداخلي أو الخارجي من خلال إعدادات النظام.
" preferExternal " التطبيق يفضل أن يتم تثبيتها على وحدة التخزين الخارجية (بطاقة سد). وليس هناك ما يضمن أن النظام سيحترم هذا الطلب. قد يتم تثبيت التطبيق على وحدة التخزين الداخلية إذا كانت الوسائط الخارجية غير متوفرة أو كاملة. وبمجرد تركيب، يمكن للمستخدم نقل التطبيق إما التخزين الداخلي أو الخارجي من خلال إعدادات النظام.
ملاحظة: بشكل افتراضي، سيتم تثبيت التطبيق على وحدة التخزين الداخلية ولا يمكن تثبيته على وحدة التخزين الخارجية إلا إذا قمت بتعريف هذه السمة لتكون إما " auto " أو " preferExternal ".

عند تثبيت تطبيق على وحدة التخزين الخارجية:


يتم حفظ الملف .apk إلى وحدة التخزين الخارجية، ولكن لا يزال يتم حفظ أي بيانات التطبيق (مثل قواعد البيانات) على ذاكرة الجهاز الداخلي.

يتم تشفير الحاوية التي يتم حفظ ملف .apk مع مفتاح يسمح للتطبيق للعمل فقط على الجهاز الذي تم تثبيته. (لا يمكن للمستخدم نقل بطاقة سد إلى جهاز آخر واستخدام التطبيقات المثبتة على البطاقة.) على الرغم من أن بطاقات سد متعددة يمكن استخدامها مع نفس الجهاز.
بناء على طلب المستخدم، يمكن نقل التطبيق إلى وحدة التخزين الداخلية.
قد يطلب المستخدم أيضا نقل تطبيق من وحدة التخزين الداخلية إلى وحدة التخزين الخارجية. ومع ذلك، لن يسمح النظام للمستخدم نقل التطبيق إلى وحدة تخزين خارجية إذا تم تعيين هذه السمة إلى internalOnly ، وهو الإعداد الافتراضي.

اقرأ موقع تثبيت التطبيق للحصول على مزيد من المعلومات حول استخدام هذه السمة (بما في ذلك كيفية الحفاظ على التوافق مع الإصدارات السابقة).


مقدمة في: أبي ليفيل 8.


قدم في:

مستوى واجهة برمجة التطبيقات (أبي) 1 لجميع السمات، ما لم يذكر خلاف ذلك في وصف السمة.
أنظر أيضا:
<application>


------------------------------------------------------



<البيانات الفوقية>

بناء الجملة:


<meta-data>

SYNTAX:
<meta-data android:name="string"
           android:resource="resource specification"
           android:value="string" />

الواردة في:

<activity> 
<activity-alias> 
<application> 
<provider> 
<receiver> 
<service>
وصف:
زوج اسم القيمة لعنصر من بيانات إضافية تعسفية يمكن توفيرها للمكون الأصلي. يمكن أن يحتوي عنصر مكون على أي عدد من العناصر الفرعية <meta-data> داتا <meta-data> . يتم جمع القيم من كل منهم في كائن Bundle واحدة وإتاحتها للمكون كحقل PackageItemInfo.metaData .
يتم تحديد القيم العادية من خلال سمة value . ومع ذلك، لتعيين معرف مورد كقيمة، استخدم السمة ريسورس بدلا من ذلك. على سبيل المثال، التعليمات البرمجية التالية بتعيين أي قيمة يتم تخزينها في @string/kangaroo الموارد إلى " zoo " اسم:


<meta-data android:name="zoo" android:value="@string/kangaroo" />
  من ناحية أخرى، باستخدام سمة ريسورس سيعين " zoo " المعرف الرقمي للمورد، وليس القيمة المخزنة في المورد:

:
<meta-data android:name="zoo" android:resource="@string/kangaroo" />


يوصى بشدة بتجنب توفير البيانات ذات الصلة كإدخالات متعددة متعددة <meta-data> منفصلة. بدلا من ذلك، إذا كان لديك بيانات معقدة لربط مع مكون تخزينه كمورد واستخدام السمة ريسورس لإبلاغ مكون معرفه.


الصفات:

android:name
اسم فريد للعنصر. للتأكد من أن الاسم فريد، استخدم اصطلاح تسمية نمط جافا - على سبيل المثال، " com.example.project.activity.fred ".
android:resource
إشارة إلى مورد. معرف المورد هو القيمة المخصصة لهذا العنصر. يمكن استرجاع المعرف من حزمة البيانات الوصفية بواسطة الطريقة Bundle.getInt() .
android:value
القيمة المخصصة لهذا العنصر. يتم سرد أنواع البيانات التي يمكن تعيينها كقيم وطرق الحزمة التي تستخدم المكونات لاسترداد تلك القيم في الجدول التالي:
اكتب طريقة الحزمة
قيمة سلسلة، باستخدام مائل عكسية مزدوجة ( \\ ) للهروب الأحرف - مثل " \\n " و " \\uxxxxx " \\uxxxxx ونيكود. getString()
القيمة الصحيحة، مثل " 100 " getInt()
القيمة المنطقية، إما " true " أو " false " getBoolean()
قيمة اللون، في شكل " #rgb "، " #argb "، " #rrggbb "، أو " #aarrggbb " getInt()
قيمة تعويم، مثل " 1.23 " getFloat()
قدم في:
أبي ليفيل 1




TypeBundle method
String value, using double backslashes (\\) to escape characters — such as "\\n" and "\\uxxxxx" for a Unicode character.getString()
Integer value, such as "100"getInt()
Boolean value, either "true" or "false"getBoolean()
Color value, in the form "#rgb", "#argb", "#rrggbb", or "#aarrggbb"getInt()
Float value, such as "1.23"



-------------------------------------------------------------------------






<مسار إذن>

بناء الجملة:


<path-permission>

SYNTAX:
<path-permission android:path="string"
                 android:pathPrefix="string"
                 android:pathPattern="string"
                 android:permission="string"
                 android:readPermission="string"
                 android:writePermission="string" />


الواردة في:

<provider>
وصف:
يحدد المسار والأذونات المطلوبة لمجموعة فرعية معينة من البيانات داخل موفر المحتوى. يمكن تحديد هذا العنصر عدة مرات لتوفير مسارات متعددة.
الصفات:
android:path
مسار أوري كامل لمجموعة فرعية من بيانات موفر المحتوى. يمكن منح الإذن فقط للبيانات المحددة التي تم تحديدها بواسطة هذا المسار. عند استخدامها لتوفير محتوى اقتراح البحث، يجب إلحاقه ب "/ search_suggest_query".
android:pathPrefix
الجزء الأول من مسار أوري لمجموعة فرعية من بيانات موفر المحتوى. يمكن منح الإذن لكافة مجموعات البيانات الفرعية مع المسارات التي تشارك هذا الجزء الأولي.
android:pathPattern
مسار أوري كامل لمجموعة فرعية من بيانات موفر المحتوى، ولكن يمكن استخدام أحد أحرف البدل التالية:
علامة النجمة (' * '). يتطابق هذا مع تسلسل من 0 إلى العديد من الأحداث من الحرف السابق مباشرة.
فترة تليها علامة النجمة (" .* "). هذا يطابق أي تسلسل من 0 أو أكثر من الأحرف.
لأن ' \ ' يستخدم كحرف هروب عند قراءة السلسلة من شمل (قبل تحليلها كنمط)، سوف تحتاج إلى الهروب المزدوج. على سبيل المثال، حرفيا ' * ' ستكتب على أنها " \\* " و حرفيا ' \ ' ستكتب على أنها " \\ ". هذا هو في الأساس نفس ما كنت بحاجة إلى الكتابة إذا بناء سلسلة في التعليمات البرمجية جافا.

لمزيد من المعلومات حول هذه الأنواع من الأنماط، راجع أوصاف PATTERN_LITERAL و PATTERN_PREFIX و PATTERN_SIMPLE_GLOB في فئة باترنماتشر .


android:permission

اسم الإذن الذي يجب أن يكون لدى العملاء لقراءة أو كتابة بيانات موفر المحتوى. هذه السمة هي وسيلة مريحة لتحديد إذن واحد لكل من القراءة والكتابة. ومع ذلك، سمات writePermission و writePermission لها الأسبقية على هذا واحد.
android:readPermission
إذن يجب أن يكون لدى العملاء للاستعلام عن موفر المحتوى.
android:writePermission
إذن يجب أن يكون لدى العملاء لإجراء تغييرات على البيانات التي يسيطر عليها مزود المحتوى.
قدم في:
أبي ليفيل 4
أنظر أيضا:
SearchManager
Manifest.permission
الأمن و بيرميسيونس


---------------------------------



<إذن>

بناء الجملة:



<permission>

SYNTAX:
<permission android:description="string resource"
            android:icon="drawable resource"
            android:label="string resource"
            android:name="string"
            android:permissionGroup="string"
            android:protectionLevel=["normal" | "dangerous" |
                                     "signature" | "signatureOrSystem"] />


الواردة في:

<manifest>
وصف:
يعلن عن إذن الأمان الذي يمكن استخدامه للحد من الوصول إلى مكونات أو ميزات معينة من هذه التطبيقات أو غيرها. راجع قسم أذونات في المقدمة، ومستند الأمان والتذونات لمزيد من المعلومات حول كيفية عمل الأذونات.
الصفات:
android:description
وصف مقروء من المستخدم للإذن، أطول وأكثر إفادة من التسمية. قد يتم عرضها لشرح الإذن للمستخدم - على سبيل المثال، عندما يطلب من المستخدم ما إذا كان لمنح الإذن لتطبيق آخر.
يجب تعيين هذه السمة كمرجع لمورد سلسلة؛ على عكس السمة label ، فإنه لا يمكن أن يكون سلسلة الخام.

android:icon

إشارة إلى مورد قابل للرسم لرمز يمثل الإذن.
android:label
اسم للإذن، وهو اسم يمكن عرضه للمستخدمين.
كراحة، التسمية يمكن تعيين مباشرة كسلسلة الخام بينما كنت تطوير التطبيق. ومع ذلك، عندما يكون التطبيق جاهزا للنشر، يجب تعيينه كمرجع لمورد سلسلة، بحيث يمكن ترجمته مثل سلاسل أخرى في واجهة المستخدم.

android:name

اسم الإذن. هذا هو الاسم الذي سيتم استخدامه في التعليمات البرمجية للإشارة إلى الإذن - على سبيل المثال، في عنصر <uses-permission> وخصائص permission مكونات التطبيق.
ملاحظة: لا يسمح النظام لحزم متعددة بإعلان إذن بنفس الاسم، إلا إذا تم توقيع جميع الحزم بنفس الشهادة. إذا كانت الحزمة تعلن إذن، لا يسمح النظام للمستخدم بتثبيت حزم أخرى بنفس اسم إذن، ما لم يتم توقيع تلك الحزم مع نفس الشهادة مثل الحزمة الأولى. لتجنب تسمية التصادمات، نوصي باستخدام تسمية النمط العكسي للأذونات المخصصة، على سبيل المثال com.example.myapp.ENGAGE_HYPERSPACE .

android:permissionGroup

تعيين هذا الإذن لمجموعة. قيمة هذه السمة هي اسم المجموعة التي يجب أن يتم الإعلان عنها مع العنصر <permission-group> في هذا التطبيق أو تطبيق آخر. إذا لم يتم تعيين هذه السمة، إذن لا ينتمي إلى مجموعة.
android:protectionLevel
يصف الخطر المحتمل الضمني في الإذن ويشير إلى الإجراء الذي يجب أن يتبعه النظام عند تحديد ما إذا كان سيتم منح الإذن لتطبيق طلب ذلك. يمكن تعيين القيمة إلى إحدى السلاسل التالية:
القيمة المعنى
" normal " القيمة الافتراضية. إذن أقل خطورة يتيح للتطبيقات المطلوبة الوصول إلى ميزات معزولة على مستوى التطبيق، مع الحد الأدنى من المخاطر على التطبيقات الأخرى أو النظام أو المستخدم. يمنح هذا النظام تلقائيا هذا النوع من الإذن لطلب الطلب عند التثبيت، دون أن يطلب موافقة المستخدم الصريحة (على الرغم من أن المستخدم لديه دائما خيار مراجعة هذه الأذونات قبل تثبيته).
" dangerous " إذن أعلى المخاطر من شأنه أن يعطي طلب طلب الوصول إلى بيانات المستخدم الخاص أو السيطرة على الجهاز التي يمكن أن تؤثر سلبا على المستخدم. ونظرا لأن هذا النوع من الإذن يقدم مخاطر محتملة، قد لا يمنح النظام تلقائيا الطلب المقدم. على سبيل المثال، قد يتم عرض أي أذونات خطيرة طلب من قبل المستخدم للمستخدم وتتطلب تأكيدا قبل الشروع، أو بعض النهج الأخرى التي يمكن اتخاذها لتجنب المستخدم يسمح تلقائيا استخدام هذه المرافق.
" signature " الإذن بأن النظام لا يمنح إلا إذا تم التوقيع على طلب الطلب بنفس الشهادة مثل الطلب الذي أعلن الإذن. إذا تطابقت الشهادات، يمنح النظام تلقائيا الإذن دون إخطار المستخدم أو طلب موافقة المستخدم الصريحة.
" signatureOrSystem " الإذن بأن النظام يمنح فقط للتطبيقات الموجودة في صورة نظام أندرويد أو التي تم توقيعها بنفس الشهادة مثل التطبيق الذي أعلن الإذن. يرجى تجنب استخدام هذا الخيار، حيث يجب أن يكون مستوى حماية signature كافيا لمعظم الاحتياجات والأعمال بغض النظر عن مكان تثبيت التطبيقات بالضبط. يتم استخدام إذن " signatureOrSystem " لبعض الحالات الخاصة حيث العديد من البائعين لديها تطبيقات مضمنة في صورة النظام وتحتاج إلى مشاركة ميزات محددة صراحة لأنها يتم بناؤها معا.
قدم في:
أبي ليفيل 1
أنظر أيضا:
<uses-permission> 
<permission-tree> 
<permission-group>



ValueMeaning
"normal"The default value. A lower-risk permission that gives requesting applications access to isolated application-level features, with minimal risk to other applications, the system, or the user. The system automatically grants this type of permission to a requesting application at installation, without asking for the user's explicit approval (though the user always has the option to review these permissions before installing).
"dangerous"A higher-risk permission that would give a requesting application access to private user data or control over the device that can negatively impact the user. Because this type of permission introduces potential risk, the system may not automatically grant it to the requesting application. For example, any dangerous permissions requested by an application may be displayed to the user and require confirmation before proceeding, or some other approach may be taken to avoid the user automatically allowing the use of such facilities.
"signature"A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval.
"signatureOrSystem"A permission that the system grants only to applications that are in the Android system image or that are signed with the same certificate as the application that declared the permission. Please avoid using this option, as the signature protection level should be sufficient for most needs and works regardless of exactly where applications are installed. The "signatureOrSystem" permission is used for certain special situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together.
INTRODUCED IN:
API Level 1
SEE ALSO:
<uses-permission>
<permission-tree>
<permission-group>


---------------------------------------------------------------------------------------------------------




<إذن، مجموعة>

بناء الجملة:


<permission-group>

SYNTAX:
<permission-group android:description="string resource"
                  android:icon="drawable resource"
                  android:label="string resource"
                  android:name="string" />


الواردة في:

<manifest>
وصف:
يعلن اسما لتجميع منطقي للأذونات ذات الصلة. ينضم الإذن الفردي إلى المجموعة من خلال السمة <permission> لعنصر <permission> . يتم عرض أعضاء مجموعة معا في واجهة المستخدم.
لاحظ أن هذا العنصر لا يعلن الإذن نفسه، فقط فئة التي يمكن وضع الأذونات. راجع عنصر <permission> للعنصر للحصول على معلومات حول إعلان الأذونات وتعيينها للمجموعات.

الصفات:

android:description
نص قابل للقراءة من قبل المستخدم يصف المجموعة. يجب أن يكون النص أطول وأكثر تفسيرا من التسمية. يجب تعيين هذه السمة كمرجع لمورد سلسلة. على عكس السمة label ، لا يمكن أن يكون سلسلة الخام.
android:icon
رمز يمثل الإذن. يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة.
android:label
اسم مقروء للمستخدم للمجموعة. كراحة، التسمية يمكن تعيين مباشرة كسلسلة الخام بينما كنت تطوير التطبيق. ومع ذلك، عندما يكون التطبيق جاهزا للنشر، يجب تعيينه كمرجع لمورد سلسلة، بحيث يمكن ترجمته مثل سلاسل أخرى في واجهة المستخدم.
android:name
اسم المجموعة. هذا هو الاسم الذي يمكن تعيينه إلى <permission> العنصر <permissionGroup> السمة.
قدم في:
أبي ليفيل 1
أنظر أيضا:
<permission> 
<permission-tree> 
<uses-permission>


-----------------------------------





<إذن شجرة>

بناء الجملة:



<permission-tree>

SYNTAX:
<permission-tree android:icon="drawable resource"
                 android:label="string resource" ]
                 android:name="string" />


الواردة في:

<manifest>
وصف:
يعلن اسم قاعدة لشجرة أذونات. التطبيق يأخذ ملكية جميع الأسماء داخل الشجرة. فإنه يمكن إضافة حيوي أذونات جديدة إلى شجرة من خلال استدعاء PackageManager.addPermission() . يتم فصل الأسماء داخل الشجرة بفترات (' . '). على سبيل المثال، إذا كان اسم الأساس com.example.project.taxes ، يمكن إضافة أذونات مثل ما يلي:
com.example.project.taxes.CALCULATE 
com.example.project.taxes.deductions.MAKE_SOME_UP 
com.example.project.taxes.deductions.EXAGGERATE

لاحظ أن هذا العنصر لا يعلن الإذن نفسه، فقط مساحة الاسم التي يمكن وضع أذونات أخرى. راجع عنصر <permission> للحصول على معلومات حول أذونات الأذونات.


الصفات:

android:icon
رمز يمثل كافة الأذونات في الشجرة. يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة.
android:label
اسم مقروء للمستخدم للمجموعة. كما الراحة، التسمية يمكن تعيين مباشرة كما سلسلة الخام للبرمجة سريعة وقذرة. ومع ذلك، عندما يكون التطبيق جاهزا للنشر، يجب تعيينه كمرجع لمورد سلسلة، بحيث يمكن ترجمته مثل سلاسل أخرى في واجهة المستخدم.
android:name
الاسم الموجود في قاعدة شجرة الإذن. وهو بمثابة بادئة لجميع أسماء الأذونات في الشجرة. يجب استخدام تحديد نطاق جافا للتأكد من أن الاسم فريد. يجب أن يحتوي الاسم على أكثر من قسمين مفصولين بفواصل زمنية في مساره - على سبيل المثال، com.example.base ما يرام، ولكن com.example ليس كذلك.
قدم في:
أبي ليفيل 1
أنظر أيضا:
<permission> 
<permission-group> 
<uses-permission>


------------------------------------------------------------------------------------




<مزود>

بناء الجملة:


<provider>

SYNTAX:
<provider android:authorities="list"
          android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string" >
    . . .</provider>


الواردة في:

<application>
يمكن أن تحتوي على:
<meta-data> 
<grant-uri-permission> 
<path-permission>
وصف:
يعلن مكون موفر المحتوى. موفر المحتوى هو فئة فرعية من ContentProvider التي توفر الوصول المنظم إلى البيانات التي يديرها التطبيق. يجب تعريف جميع موفري المحتوى في التطبيق الخاص بك في عنصر <provider> في ملف البيان. وإلا، فإن النظام لا يدرك منهم ولا تشغيلها.
أنت تعلن فقط موفري المحتوى الذين يشكلون جزءا من طلبك. يجب عدم الإعلان عن مزودي المحتوى في التطبيقات الأخرى التي تستخدمها في طلبك.

يخزن نظام أندرويد المراجع لموفري المحتوى وفقا لسلسلة سلطة ، وهي جزء من عنوان أوري الخاص بالموفر. على سبيل المثال، لنفترض أنك ترغب في الوصول إلى موفر المحتوى الذي يخزن معلومات عن المتخصصين في الرعاية الصحية. للقيام بذلك، استدعاء الأسلوب ContentResolver.query() ، والتي من بين وسيطات أخرى يأخذ معرف أوري الذي يعرف موفر:




content://com.example.project.healthcareprovider/nurses/rn


يحدد content: أوري كعنوان أوري للمحتوى يشير إلى موفر محتوى أندرويد. com.example.project.healthcareprovider السلطة com.example.project.healthcareprovider الموفر نفسه؛ فإن نظام أندرويد يبحث عن السلطة في قائمة مقدمي الخدمات المعروفين وسلطاتهم. nurses/rn الفرعية nurses/rn هو المسار الذي يمكن لموفر المحتوى استخدامه لتحديد مجموعات فرعية من بيانات المزود.


لاحظ أنه عند تعريف موفر الخاص بك في العنصر <provider> ، لا تقم بتضمين المخطط أو المسار في الوسيطة android:name ، فقط السلطة.


للحصول على معلومات حول استخدام موفري المحتوى وتطويرهم، راجع دليل أبي، موفري المحتوى .


الصفات:

android:authorities
قائمة بسلطة أوري واحدة أو أكثر تحدد البيانات التي يقدمها مزود المحتوى. يتم سرد السلطات متعددة عن طريق فصل أسماءهم مع فاصلة منقوطة. لتجنب الصراعات، يجب أن تستخدم أسماء السلطة اصطلاح تسمية نمط جافا (مثل com.example.provider.cartoonprovider ). عادة، هو اسم الفئة الفرعية ContentProvider التي تقوم بتنفيذ موفر الخدمة
لا يوجد افتراضي. ويجب تحديد سلطة واحدة على الأقل.

android:enabled

ما إذا كان مزود المحتوى يمكن أن يكون مثبتا من قبل النظام - " true " إذا كان يمكن أن يكون، و " false " إن لم يكن. القيمة الافتراضية هي " true ".
يحتوي العنصر <application> على سمة enabled تنطبق على جميع مكونات التطبيقات، بما في ذلك موفرو المحتوى. يجب أن تكون سمات <application> و <provider> حد سواء " true " (كما هي بشكل افتراضي) لتمكين موفر المحتوى. إذا كان أي من " false "، يتم تعطيل مزود؛ فإنه لا يمكن مثيل.

android:directBootAware

ما إذا كان مزود المحتوى على علم بالتمهيد المباشر أم لا؛ وهذا هو، ما إذا كان أو لا يمكن تشغيل قبل المستخدم يفتح الجهاز.

ملاحظة: أثناء التمهيد المباشر ، موفر المحتوى في التطبيق الخاص بك يمكن الوصول فقط إلى البيانات التي يتم تخزينها في الجهاز المحمية التخزين.


القيمة الافتراضية هي "false" .


android:exported

ما إذا كان مزود المحتوى متاحا للتطبيقات الأخرى التي سيتم استخدامها:
true : مزود تتوفر للتطبيقات الأخرى. يمكن لأي تطبيق استخدام عنوان أوري الخاص بموفر الخدمة للوصول إليه، مع مراعاة الأذونات المحددة للموفر.
false : موفر الخدمة غير متوفر للتطبيقات الأخرى. تعيين android:exported="false" للحد من الوصول إلى موفر للتطبيقات الخاصة بك. فقط التطبيقات التي لها نفس معرف المستخدم (إيد) كموفر سيكون الوصول إليها.
لأنه تم تقديم هذه السمة في مستوى أبي 17، كافة الأجهزة التي تعمل مستوى أبي 16 وأقل تتصرف كما لو تم تعيين هذه السمة "true" . إذا قمت بتعيين android:targetSdkVersion إلى 17 أو أعلى، ثم القيمة الافتراضية هي "false" للأجهزة التي تعمل مستوى أبي 17 وأعلى.

يمكنك تعيين android:exported="false" ولا تزال تحد من الوصول إلى مزود الخاص بك عن طريق تعيين أذونات مع السمة permission .


android:grantUriPermissions

ما إذا كان يمكن لمن لم يحصلوا على إذن للوصول إلى بيانات موفر المحتوى عادة أن يحصلوا على إذن بذلك أم لا، readPermission مؤقتا القيود المفروضة من قبل سمات permission و writePermission و permission - " writePermission " إذا تم منح الإذن، و " false "إن لم يكن. إذا كان " true "، فيمكن منح الإذن لأي من بيانات موفر المحتوى. إذا كان " false "، يمكن منح الإذن فقط للمجموعات الفرعية للبيانات المدرجة في <grant-uri-permission> بيرميسيون <grant-uri-permission> سوبليمنتس، إن وجدت. القيمة الافتراضية هي " false ".
منح الإذن هو وسيلة لإعطاء عنصر التطبيق لمرة واحدة الوصول إلى البيانات المحمية بإذن. على سبيل المثال، عندما تحتوي رسالة بريد إلكتروني على مرفق، قد طلب تطبيق البريد للمشاهد المناسب لفتحه، على الرغم من أن المشاهد ليس لديه إذن عام للنظر في كافة بيانات موفر المحتوى.

في مثل هذه الحالات، يتم منح الإذن ب FLAG_GRANT_READ_URI_PERMISSION و FLAG_GRANT_WRITE_URI_PERMISSION في الكائن FLAG_GRANT_WRITE_URI_PERMISSION الذي يقوم بتنشيط المكون. على سبيل المثال، قد وضع تطبيق البريد FLAG_GRANT_READ_URI_PERMISSION في FLAG_GRANT_READ_URI_PERMISSION تمريرها إلى Context.startActivity() . الإذن محدد لعنوان أوري في النية.


إذا قمت بتمكين هذه الميزة، إما عن طريق تعيين هذه السمة إلى " true " أو عن طريق تحديد <grant-uri-permission> بيرميسيون <grant-uri-permission> سوبليمنتس، يجب استدعاء Context.revokeUriPermission() عند حذف معرف أوري المغطى من موفر الخدمة.


انظر أيضا عنصر <grant-uri-permission> .


android:icon

رمز يمثل مقدم المحتوى. يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة. إذا لم يتم تعيينه، فسيتم استخدام الرمز المحدد للتطبيق ككل بدلا من ذلك (راجع سمة icon العنصر <application> ).
android:initOrder
الترتيب الذي يجب أن يتم فيه إنشاء مقدم المحتوى، مقارنة بمقدمي المحتوى الآخرين الذين تستضيفهم العملية نفسها. عندما تكون هناك تبعيات بين موفري المحتوى، فإن تعيين هذه السمة لكل منها يضمن أن يتم إنشاؤها بالترتيب المطلوب من قبل تلك التبعيات. القيمة هي عدد صحيح بسيط، مع تهيئة أرقام أعلى أولا.
android:label
تصنيف يمكن قراءته للمستخدم للمحتوى المقدم. إذا لم يتم تعيين هذه السمة، فسيتم استخدام مجموعة التصنيفات للتطبيق ككل بدلا من ذلك (راجع سمة label <application> للعنصر).
يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم. ومع ذلك، كراحة أثناء تطوير التطبيق، فإنه يمكن أيضا تعيين سلسلة الخام.

android:multiprocess

إذا كان التطبيق يعمل في عمليات متعددة، تحدد هذه السمة ما إذا تم إنشاء مثيلات متعددة من بروفيدر المحتوى. إذا كان true ، كل من العمليات التطبيق لديه كائن مزود المحتوى الخاص بها. إذا false ، عمليات التطبيق حصة كائن موفر المحتوى واحد فقط. القيمة الافتراضية هي false .
قد يؤدي إعداد هذه العلامة إلى ترو إلى تحسين الأداء عن طريق تقليل النفقات العامة للاتصالات بين العمليات، ولكنه يزيد أيضا من حجم الذاكرة لكل عملية.

android:name

اسم الفئة التي تنفذ موفر المحتوى، فئة فرعية من ContentProvider . يجب أن يكون هذا اسم فئة مؤهل بالكامل (مثل، " com.example.project.TransportationProvider "). ومع ذلك، باعتباره الاختزال، إذا كان الحرف الأول من الاسم هو فترة، يتم إلحاقه باسم الحزمة المحدد في العنصر <manifest> .
لا يوجد افتراضي. يجب تحديد الاسم.

android:permission

اسم الإذن الذي يجب أن يكون على العملاء قراءة أو كتابة بيانات موفر المحتوى. هذه السمة هي وسيلة مريحة لتحديد إذن واحد لكل من القراءة والكتابة. ومع ذلك، سمات writePermission و writePermission لها الأسبقية على هذا واحد. إذا تم readPermission السمة readPermission أيضا، فإنه يتحكم في الوصول للاستعلام موفر المحتوى. وإذا تم تعيين السمة writePermission ، فإنه يتحكم في الوصول لتعديل بيانات موفر.
للحصول على مزيد من المعلومات حول الأذونات، راجع قسم الأذونات في المقدمة ومستند منفصل، الأمان والأذونات.

android:process

اسم العملية التي يجب تشغيل مزود المحتوى. عادة، يتم تشغيل كافة مكونات أحد التطبيقات في العملية الافتراضية التي تم إنشاؤها للتطبيق. له نفس اسم حزمة التطبيق. يمكن أن تحدد السمة بروسيس الخاصة ب <application> عنصر افتراضي مختلف لكل المكونات. ولكن يمكن لكل مكون تجاوز الافتراضي مع سمة process الخاصة به، مما يسمح لك لنشر التطبيق الخاص بك عبر عمليات متعددة.
إذا كان الاسم المعين لهذه السمة يبدأ بنقطتين (':')، يتم إنشاء عملية جديدة، خاصة إلى التطبيق، عند الحاجة إليها ويتم تشغيل النشاط في تلك العملية. إذا كان اسم العملية يبدأ بحرف صغير، سيتم تشغيل النشاط في عملية عالمية من هذا الاسم، شريطة أن يكون لديه إذن للقيام بذلك. هذا يسمح المكونات في تطبيقات مختلفة لتبادل عملية، والحد من استخدام الموارد.

android:readPermission

إذن أن العملاء يجب أن يكون الاستعلام عن موفر المحتوى. أنظر أيضا permission وسمات writePermission .
android:syncable
ما إذا كان سيتم مزامنة البيانات تحت سيطرة موفر المحتوى مع البيانات على الخادم - " true " إذا كان يجب مزامنتها و " false " إن لم يكن.
android:writePermission
إذن أن العملاء يجب أن يكون لإجراء تغييرات على البيانات التي يسيطر عليها مزود المحتوى. راجع أيضا سمات permission و readPermission .
قدم في:
أبي ليفيل 1
أنظر أيضا:
موفري المحتوى

-------------------------------------------------------------------------



<المستقبل>

بناء الجملة:


<receiver>

SYNTAX:
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    . . .</receiver>

الواردة في:

<application>
يمكن أن تحتوي على:
<intent-filter> 
<meta-data>
وصف:
يعلن جهاز استقبال البث (فئة فرعية BroadcastReceiver سيسيفر) كأحد مكونات التطبيق. وتتيح مستقبلات البث التطبيقات لاستقبال النوايا التي يبثها النظام أو التطبيقات الأخرى، حتى في حالة عدم تشغيل المكونات الأخرى للتطبيق.
هناك طريقتان لجعل جهاز استقبال البث معروف للنظام: واحد يعلن ذلك في ملف البيان مع هذا العنصر. والآخر هو إنشاء المتلقي بشكل حيوي في التعليمات البرمجية وتسجيلها باستخدام الأسلوب Context.registerReceiver() . لمزيد من المعلومات حول كيفية إنشاء مستقبلات ديناميكيا، راجع وصف فئة BroadcastReceiver .

تحذير: حدد عدد مستقبلات البث التي عينتها في تطبيقك. يمكن أن يؤثر وجود عدد كبير جدا من أجهزة البث الإذاعية على أداء تطبيقك وعمر البطارية لأجهزة المستخدمين. لمزيد من المعلومات حول واجهات برمجة التطبيقات يمكنك استخدام بدلا من فئة BroadcastReceiver لجدولة أعمال الخلفية، راجع تحسينات الخلفية .


الصفات:

android:directBootAware
ما إذا كان مستقبل البث مباشرا أم لا؛ وهذا هو، ما إذا كان أو لا يمكن تشغيل قبل المستخدم يفتح الجهاز.

ملاحظة: أثناء التمهيد المباشر ، يمكن لمستقبل البث في التطبيق الخاص بك الوصول فقط إلى البيانات التي يتم تخزينها في جهاز التخزين المحمي .


القيمة الافتراضية هي "false" .


android:enabled

ما إذا كان يمكن استقبال مستقبل البث من قبل النظام - " true " إذا كان يمكن أن يكون، و " false " إن لم يكن. القيمة الافتراضية هي " true ".
يحتوي العنصر <application> على سمة enabled تنطبق على جميع مكونات التطبيقات، بما في ذلك أجهزة استقبال البث. يجب أن تكون سمات <receiver> و <receiver> حد سواء " true " لكي يتم تمكين مستقبل البث. إذا كان أي منهما " false "، يتم تعطيله؛ فإنه لا يمكن مثيل.

android:exported

ما إذا كان مستقبل البث يمكن أن يتلقى رسائل من مصادر خارج تطبيقه - " true " إذا كان يمكن، و " false " إن لم يكن. إذا كانت " false "، فالرسائل الوحيدة التي يمكن أن يستقبلها مستقبل البث هي تلك التي يتم إرسالها بواسطة مكونات التطبيق نفسه أو التطبيقات التي لها نفس معرف المستخدم.
وتعتمد القيمة الافتراضية على ما إذا كان مستقبل البث يحتوي على فلاتر مقترحة. عدم وجود أي مرشحات يعني أنه يمكن استدعاء فقط من قبل الكائنات النية التي تحدد اسم الفئة بالضبط. وهذا يعني ضمنا أن المستقبل مقصود فقط للاستخدام الداخلي للتطبيق (لأن الآخرين لا يعرفون عادة اسم الفئة). لذلك في هذه الحالة، القيمة الافتراضية هي " false ". ومن ناحية أخرى، فإن وجود مرشح واحد على الأقل يعني ضمنا أن مستقبل البث يستهدف استقبال النوايا التي يبثها النظام أو التطبيقات الأخرى، وبالتالي فإن القيمة الافتراضية هي " true ".

وهذه السمة ليست الطريقة الوحيدة للحد من التعرض الخارجي لجهاز البث. يمكنك أيضا استخدام إذن للحد من الكيانات الخارجية التي يمكن إرسالها الرسائل (راجع سمة permission ).


android:icon

رمز يمثل مستقبل البث. يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة. إذا لم يتم تعيينه، فسيتم استخدام الرمز المحدد للتطبيق ككل بدلا من ذلك (راجع سمة icon العنصر <application> ).
إن رمز مستقبل البث - سواء تم تعيينه هنا أو عن طريق عنصر <application> - هو أيضا الرمز الافتراضي لجميع فلاتر نية المستقبل (راجع سمة icon العنصر <intent-filter> ).

android:label

تسمية قابلة للقراءة من قبل المستخدم لمستقبل البث. إذا لم يتم تعيين هذه السمة، فسيتم استخدام مجموعة التصنيفات للتطبيق ككل بدلا من ذلك (راجع سمة label <application> للعنصر).
كما أن تصنيف جهاز استقبال البث - سواء تم تعيينه هنا أو عن طريق عنصر <application> هو أيضا التسمية الافتراضية لجميع فلاتر نية المستقبل (راجع سمة label العنصر <intent-filter> ).

يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم. ومع ذلك، كراحة أثناء تطوير التطبيق، فإنه يمكن أيضا تعيين سلسلة الخام.


android:name

اسم الطبقة التي تنفذ جهاز استقبال البث، وهي فئة فرعية من BroadcastReceiver . يجب أن يكون هذا اسم فئة مؤهل بالكامل (مثل، " com.example.project.ReportReceiver "). ومع ذلك، كختزال، إذا كان الحرف الأول للاسم هو فترة (على سبيل المثال، " . ReportReceiver ")، يتم إلحاقه باسم الحزمة المحدد في العنصر <manifest> . ReportReceiver <manifest> .
بعد نشر تطبيقك، يجب عدم تغيير هذا الاسم (إلا إذا عينت android:exported ="false" ).

لا يوجد افتراضي. يجب تحديد الاسم.


android:permission

اسم إذن أن هيئات البث يجب أن تضطر إلى إرسال رسالة إلى جهاز استقبال البث. إذا لم يتم تعيين هذه السمة، فسيتم تطبيق الإذن الذي تم تعيينه من خلال سمة permission <application> على مستلم البث. إذا لم يتم تعيين أي سمة، لا يتم حماية المتلقي عن طريق إذن.
للحصول على مزيد من المعلومات حول الأذونات، راجع قسم الأذونات في المقدمة ومستند منفصل، الأمان والأذونات.

android:process

اسم العملية التي يجب أن يعمل فيها مستقبل البث. عادة، يتم تشغيل كافة مكونات أحد التطبيقات في العملية الافتراضية التي تم إنشاؤها للتطبيق. له نفس اسم حزمة التطبيق. يمكن أن تحدد السمة بروسيس الخاصة ب <application> عنصر افتراضي مختلف لكل المكونات. ولكن يمكن لكل مكون تجاوز الافتراضي مع سمة process الخاصة به، مما يسمح لك لنشر التطبيق الخاص بك عبر عمليات متعددة.
إذا كان الاسم المعين لهذه السمة يبدأ بنقطتين (':')، يتم إنشاء عملية جديدة، خاصة إلى التطبيق، عندما تكون هناك حاجة، ويتم تشغيل مستقبل البث في تلك العملية. إذا بدأ اسم العملية بحرف صغير، فسيتم تشغيل المستقبل في عملية عالمية من هذا الاسم، شريطة أن يكون لديه إذن للقيام بذلك. هذا يسمح المكونات في تطبيقات مختلفة لتبادل عملية، والحد من استخدام الموارد.

قدم في:

أبي ليفيل 1
----------------------------------------------------------------------------------------------

<خدمة>

بناء الجملة:


<service>

SYNTAX:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    . . .</service>
الواردة في:
<application>
يمكن أن تحتوي على:
<intent-filter> 
<meta-data>
وصف:
يعلن خدمة (فئة فرعية Service ) باعتبارها واحدة من مكونات التطبيق. وخلافا للأنشطة، تفتقر الخدمات إلى واجهة مستخدم بصرية. انهم يستخدمون لتنفيذ عمليات خلفية طويلة الأمد أو أبي الاتصالات الغنية التي يمكن استدعاؤها من قبل التطبيقات الأخرى.
يجب أن تكون جميع الخدمات ممثلة بعناصر <service> في ملف البيان. أي أن لم يتم الإعلان هناك لن ينظر إليها من قبل النظام ولن يتم تشغيلها.

الصفات:

android:description
سلسلة تصف الخدمة للمستخدمين. يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم.
android:directBootAware
ما إذا كانت الخدمة هي التمهيد المباشر على علم . وهذا هو، ما إذا كان أو لا يمكن تشغيل قبل المستخدم يفتح الجهاز.

ملاحظة: أثناء التمهيد المباشر ، خدمة في التطبيق الخاص بك يمكن الوصول فقط إلى البيانات التي يتم تخزينها في الجهاز المحمية التخزين.


القيمة الافتراضية هي "false" .


android:enabled

ما إذا كان يمكن أن تكون الخدمة مثبتة من قبل النظام - " true " إذا كان يمكن أن يكون، و " false " إن لم يكن. القيمة الافتراضية هي " true ".
يحتوي العنصر <application> على سمة enabled تنطبق على جميع مكونات التطبيقات، بما في ذلك الخدمات. يجب أن تكون سمات <application> و <service> حد سواء " true " (كما هو الحال بشكل افتراضي) لتمكين الخدمة. إذا كان أي من " false "، يتم تعطيل الخدمة؛ فإنه لا يمكن مثيل.

android:exported

ما إذا كانت مكونات التطبيقات الأخرى يمكن أن تحتج بالخدمة أو تتفاعل معها - " true " إذا استطاعت ذلك، و " false " إن لم يكن. عندما تكون القيمة " false "، يمكن فقط مكونات نفس التطبيق أو التطبيقات التي لها نفس كود المستخدم بدء الخدمة أو الارتباط بها.
تعتمد القيمة الافتراضية على ما إذا كانت الخدمة تحتوي على فلاتر القصد. عدم وجود أي مرشحات يعني أنه يمكن الاحتجاج بها فقط عن طريق تحديد اسم الفئة بالضبط. وهذا يعني أن الخدمة مخصصة فقط للاستخدام الداخلي للتطبيق (لأن الآخرين لا يعرفون اسم الفئة). لذلك في هذه الحالة، القيمة الافتراضية هي " false ". من ناحية أخرى، فإن وجود مرشح واحد على الأقل يعني أن الخدمة مخصصة للاستخدام الخارجي، وبالتالي فإن القيمة الافتراضية هي " true ".

هذه السمة ليست الطريقة الوحيدة للحد من تعرض خدمة إلى تطبيقات أخرى. يمكنك أيضا استخدام إذن للحد من الكيانات الخارجية التي يمكن أن تتفاعل مع الخدمة (راجع سمة permission ).


android:icon

رمز يمثل الخدمة. يجب تعيين هذه السمة كمرجع إلى مورد قابل للرسم يحتوي على تعريف الصورة. إذا لم يتم تعيينه، فسيتم استخدام الرمز المحدد للتطبيق ككل بدلا من ذلك (راجع سمة icon العنصر <application> ).
رمز الخدمة - سواء تم تعيينه هنا أو عن طريق عنصر <application> - هو أيضا الرمز الافتراضي لجميع فلاتر نية الخدمة (راجع سمة icon العنصر <intent-filter> ).

android:isolatedProcess

إذا تم تعيين إلى ترو، سيتم تشغيل هذه الخدمة تحت عملية خاصة معزولة عن بقية النظام وليس لديه أذونات خاصة بها. الاتصال الوحيد معها هو من خلال أبي الخدمة (ملزمة وبدء).
android:label
اسم الخدمة التي يمكن عرضها للمستخدمين. إذا لم يتم تعيين هذه السمة، فسيتم استخدام مجموعة التصنيفات للتطبيق ككل بدلا من ذلك (راجع سمة label <application> للعنصر).
كما أن تصنيف الخدمة - سواء تم تعيينه هنا أو عن طريق عنصر <application> - هو أيضا التصنيف الافتراضي لجميع فلاتر نية الخدمة (راجع سمة label العنصر <intent-filter> ).

يجب تعيين التسمية كمرجع لمورد سلسلة، بحيث يمكن ترجمتها مثل سلاسل أخرى في واجهة المستخدم. ومع ذلك، كراحة أثناء تطوير التطبيق، فإنه يمكن أيضا تعيين سلسلة الخام.


android:name

اسم الفئة الفرعية Service التي تقوم بتنفيذ الخدمة. يجب أن يكون هذا اسم فئة مؤهل بالكامل (مثل، " com.example.project.RoomService "). ومع ذلك، كختزال، إذا كان الحرف الأول للاسم هو فترة (على سبيل المثال، " .RoomService ")، يتم إلحاقه باسم الحزمة المحدد في العنصر <manifest> .RoomService <manifest> .
بعد نشر تطبيقك، يجب عدم تغيير هذا الاسم (إلا إذا عينت android:exported ="false" ).

لا يوجد افتراضي. يجب تحديد الاسم.


android:permission

اسم الإذن الذي يجب أن يكون لدى الكيان من أجل إطلاق الخدمة أو الارتباط بها. إذا لم يتم منح المتصل من startService() أو bindService() أو stopService() هذا الإذن، لن تعمل الطريقة ولن يتم تسليم الكائن stopService() إلى الخدمة.
إذا لم يتم تعيين هذه السمة، فسيتم تطبيق الإذن الذي تم تعيينه من خلال سمة permission <application> على الخدمة. إذا لم يتم تعيين أي سمة، الخدمة غير محمية بإذن.

للحصول على مزيد من المعلومات حول الأذونات، راجع قسم الأذونات في المقدمة ومستند منفصل، الأمان والأذونات.


android:process

اسم العملية حيث يتم تشغيل الخدمة. عادة، يتم تشغيل كافة مكونات أحد التطبيقات في العملية الافتراضية التي تم إنشاؤها للتطبيق. له نفس اسم حزمة التطبيق. يمكن أن تحدد السمة بروسيس الخاصة ب <application> عنصر افتراضي مختلف لكل المكونات. ولكن يمكن أن يتجاوز المكون الافتراضي مع سمة process الخاصة به، مما يسمح لك لنشر التطبيق الخاص بك عبر عمليات متعددة.
إذا كان الاسم المعين لهذه السمة يبدأ بنقطتين (':')، يتم إنشاء عملية جديدة، خاصة إلى التطبيق، عند الحاجة إليها ويتم تشغيل الخدمة في تلك العملية. إذا كان اسم العملية يبدأ بحرف صغير، سيتم تشغيل الخدمة في عملية عالمية من هذا الاسم، شريطة أن يكون لديه إذن للقيام بذلك. هذا يسمح المكونات في تطبيقات مختلفة لتبادل عملية، والحد من استخدام الموارد.

أنظر أيضا:

<application> 
<activity>
قدم في:
أبي ليفيل 1

-----------------------------------




<الدعم-GL-نسيج>


غوغل بلاي فيلترينغ


يقوم غوغل بلاي بتصفية التطبيقات وفقا لتنسيقات ضغط الملمس التي تدعمها، وذلك لضمان إمكانية تثبيتها فقط على الأجهزة التي يمكنها معالجة القوام بشكل صحيح. يمكنك استخدام تصفية ضغط الملمس كوسيلة لاستهداف أنواع أجهزة معينة، استنادا إلى منصة غبو.


للحصول على معلومات مهمة حول كيفية استخدام غوغل بلاي <supports-gl-texture> عناصر كأساس للتصفية، يرجى قراءة غوغل بلاي وتصفية ضغط الملمس أدناه.

بناء الجملة:


<supports-gl-texture
  android:name="string" />

الواردة في:

<manifest>
وصف:
يعلن شكل واحد نسيج غل ضغط معتمد من قبل التطبيق.
تطبيق "يدعم" تنسيق غل الملمس ضغط إذا كان قادرا على توفير الأصول الملمس التي يتم ضغطها في هذا الشكل، بمجرد تثبيت التطبيق على جهاز. يمكن تطبيق توفير الأصول المضغوطة محليا، من داخل .apk ، أو أنه يمكن تحميلها من خادم في وقت التشغيل.

يعلن كل عنصر من عناصر <supports-gl-texture> تنسيق ضغط للملمس مدعوم بالضبط، يتم تحديده على أنه قيمة سمة android:name نيم. إذا كان تطبيقك يدعم تنسيقات متعددة لنسيج الملمس، فيمكنك الإعلان عن عناصر <supports-gl-texture> متعددة. فمثلا:



<supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
<supports-gl-texture android:name="GL_OES_compressed_paletted_texture" />

معلنة <supports-gl-texture> عناصر هي المعلوماتية، وهذا يعني أن نظام أندرويد نفسه لا تفحص العناصر في وقت التثبيت لضمان مطابقة الدعم على الجهاز. ومع ذلك، يمكن للخدمات الأخرى (مثل غوغل بلاي) أو التطبيقات التحقق من <supports-gl-texture> للتطبيقات كجزء من التعامل مع طلبك أو التفاعل معه. لهذا السبب، من المهم جدا أن تعلن جميع أشكال ضغط الملمس (من القائمة أدناه) أن التطبيق الخاص بك هو قادر على دعم.


التطبيقات والأجهزة تعلن عادة دعمها غل تنسيقات ضغط الملمس باستخدام نفس مجموعة من سلاسل معروفة، كما هو موضح أدناه. وقد تنمو مجموعة سلاسل النسق بمرور الوقت، حسب الحاجة، وبما أن القيم هي سلاسل، فإن التطبيقات حرة في إعلان الأشكال الأخرى حسب الحاجة.


على افتراض أن التطبيق تم إنشاؤه باستخدام أدوات المنصة سك r3 أو أعلى، يتم تنشيط التصفية استنادا إلى عنصر <supports-gl-texture> لجميع مستويات واجهة برمجة التطبيقات.


الصفات:

android:name
يحدد تنسيق ضغط نسيج غل واحد يدعمه التطبيق، كسلسلة واصف. يتم سرد قيم الواصفات الشائعة في الجدول أدناه.
الملمس ضغط تنسيق الواصفات تعليقات
GL_OES_compressed_ETC1_RGB8_texture إريسون نسيج الملمس. المحدد في برنامج أوبنغل إس 2.0 والمتاحة في جميع الأجهزة التي تعمل بنظام التشغيل أندرويد التي تدعم برنامج أوبنغل إس 2.0.
GL_OES_compressed_paletted_texture عام بالتيتد ضغط الملمس.
GL_AMD_compressed_3DC_texture آتي 3Dc نسيج الملمس.
GL_AMD_compressed_ATC_texture آتي ضغط الملمس. متوفرة على أجهزة تشغيل الكظر غبو، بما في ذلك هتس نيكزس واحد، الروبوت لا يصدق، إيفو، وغيرها. ولأوسع توافق، قد تقوم الأجهزة أيضا بإعلان عنصر <supports-gl-texture> GL_ATI_texture_compression_atitc <supports-gl-texture> GL_ATI_texture_compression_atitc <supports-gl-texture> مع واصف GL_ATI_texture_compression_atitc .
GL_EXT_texture_compression_latc الإنارة ألفا نسيج الملمس.
GL_EXT_texture_compression_dxt1 S3 DXT1 ضغط الملمس. بدعم على الأجهزة التي تعمل منصة نفيديا Tegra2، بما في ذلك موتورالا شوم، موتورولا أتريكس، الروبوت بيونيك، وغيرها.
GL_EXT_texture_compression_s3tc S3 ضغط الملمس، غير محدد إلى دكست البديل. بدعم على الأجهزة التي تعمل منصة نفيديا Tegra2، بما في ذلك موتورالا شوم، موتورولا أتريكس، الروبوت بيونيك، وغيرها. إذا كان التطبيق الخاص بك يتطلب متغير دكست معين، نعلن أن الوصف بدلا من هذا واحد.
GL_IMG_texture_compression_pvrtc بويرفر ضغط الملمس. متوفر في أجهزة تشغيل بويرفر SGX530 / 540 غبو، مثل سلسلة موتورولا درويد. سامسونج غالاكسي S، نيكزس S، وجالكسي تاب. و اخرين.




Texture Compression Format DescriptorComments
GL_OES_compressed_ETC1_RGB8_textureEricsson texture compression. Specified in OpenGL ES 2.0 and available in all Android-powered devices that support OpenGL ES 2.0.
GL_OES_compressed_paletted_textureGeneric paletted texture compression.
GL_AMD_compressed_3DC_textureATI 3Dc texture compression.
GL_AMD_compressed_ATC_textureATI texture compression. Available on devices running Adreno GPU, including HTC Nexus One, Droid Incredible, EVO, and others. For widest compatibility, devices may also declare a <supports-gl-texture> element with the descriptor GL_ATI_texture_compression_atitc.
GL_EXT_texture_compression_latcLuminance alpha texture compression.
GL_EXT_texture_compression_dxt1S3 DXT1 texture compression. Supported on devices running Nvidia Tegra2 platform, including Motorala Xoom, Motorola Atrix, Droid Bionic, and others.
GL_EXT_texture_compression_s3tcS3 texture compression, nonspecific to DXT variant. Supported on devices running Nvidia Tegra2 platform, including Motorala Xoom, Motorola Atrix, Droid Bionic, and others. If your application requires a specific DXT variant, declare that descriptor instead of this one.
GL_IMG_texture_compression_pvrtcPowerVR texture compression. Available in devices running PowerVR SGX530/540 GPU, such as Motorola DROID series; Samsung Galaxy S, Nexus S, and Galaxy Tab; and others.
SEE ALSO:
أنظر أيضا:
الفلاتر على غوغل بلاي
جوجل اللعب والملمس ضغط تصفية
يقوم غوغل بلاي بتصفية التطبيقات المرئية للمستخدمين، بحيث يمكن للمستخدمين رؤية وتنزيل التطبيقات المتوافقة مع أجهزتهم فقط. واحدة من الطرق التي تقوم بتصفية التطبيقات هي من خلال التوافق ضغط الملمس، مما يتيح لك التحكم في مدى توافر التطبيق الخاص بك إلى مختلف الأجهزة، استنادا إلى قدرات وحدات معالجة الرسومات الخاصة بهم.

لتحديد توافق ضغط الملمس للتطبيق مع جهاز مستخدم معين، يقارن غوغل بلاي ما يلي:


تنسيقات ضغط الملمس التي يتم دعمها من قبل التطبيق - تطبيق يعلن تنسيقات ضغط نسيج دعمها في <supports-gl-texture> العناصر في بيانها 

مع...
تنسيقات ضغط الملمس التي يتم دعمها من قبل وحدة معالجة الرسومات على الجهاز - جهاز تقارير تنسيقات كما يدعم خصائص النظام للقراءة فقط.
في كل مرة تقوم فيها بتحميل تطبيق إلى وحدة تحكم غوغل بلاي، يقوم غوغل بلاي بمسح ملف البيان الخاص بالتطبيق ويبحث عن أي عناصر <supports-gl-texture> . يقوم باستخراج واصف النسق من العناصر ويخزنها داخليا كبيانات وصفية مقترنة بتطبيق .apk ونسخة التطبيق.

عندما يبحث المستخدم أو يستعرض للتطبيقات على غوغل بلاي، تقارن الخدمة تنسيقات ضغط الملمس التي يدعمها التطبيق مع تلك التي يدعمها جهاز المستخدم. وتستند المقارنة على سلاسل واصف النسق ويجب أن تكون المطابقة دقيقة.


إذا كان أي من تنسيقات ضغط الملمس التي يدعمها التطبيق مدعوما أيضا بالجهاز، فإن غوغل بلاي يسمح للمستخدم بمشاهدة التطبيق وربما تنزيله. وإلا، إذا لم يتم دعم أي من تنسيقات التطبيق من قبل الجهاز، فسيقوم غوغل بلاي بتصفية التطبيق بحيث لا يكون متاحا للتنزيل.


إذا لم يعلن أحد التطبيقات عن أي عناصر <supports-gl-texture> ، فإن غوغل بلاي لا يطبق أي تصفية استنادا إلى تنسيق ضغط الملمس غل.


-------------------------------------------------------------


<الدعم شاشات>

بناء الجملة:


<supports-screens>

SYNTAX:
<supports-screens android:resizeable=["true"| "false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>


الواردة في:

<manifest>
وصف:
يتيح لك تحديد أحجام الشاشة يدعم التطبيق الخاص بك وتمكين وضع توافق الشاشة لشاشات أكبر مما يدعمه التطبيق. من المهم أن تستخدم هذا العنصر دائما في تطبيقك لتحديد أحجام الشاشة التي يدعمها تطبيقك.
تطبيق "يدعم" حجم شاشة معين إذا كان تغيير حجم بشكل صحيح لملء الشاشة بأكملها. تغيير حجم العادية التي يطبقها النظام يعمل بشكل جيد لمعظم التطبيقات وليس لديك للقيام بأي عمل إضافي لجعل التطبيق الخاص بك تعمل على شاشات أكبر من جهاز الهاتف. ومع ذلك، من المهم في كثير من الأحيان تحسين واجهة مستخدم التطبيق لأحجام مختلفة للشاشة من خلال توفير موارد تخطيط بديلة . على سبيل المثال، قد تحتاج إلى تعديل تخطيط النشاط عندما يكون على جهاز لوحي مقارنة مع تشغيله على جهاز الهاتف.

ومع ذلك، إذا لم يعمل تطبيقك بشكل جيد عند تغيير حجمه لتتناسب مع أحجام الشاشة المختلفة، يمكنك استخدام سمات عنصر <supports-screens> للتحكم في ما إذا كان يجب توزيع تطبيقك على الشاشات الأصغر حجما أو توسيع واجهة المستخدم ("التكبير / التصغير ") لتتناسب مع الشاشات الأكبر باستخدام وضع توافق الشاشة في النظام. عندما لم تكن مصممة لأحجام الشاشة الكبيرة و تغيير الحجم العادي لا يحقق النتائج المناسبة، ووضع التوافق الشاشة توسيع نطاق واجهة المستخدم الخاص بك عن طريق محاكاة حجم الشاشة العادية و المتوسطة الكثافة، ثم التكبير بحيث يملأ الشاشة بأكملها. احذر من أن هذا يؤدي إلى تداخل وظهور واجهة المستخدم، لذا فمن الأفضل إذا قمت بتحسين واجهة المستخدم للشاشات الكبيرة.


ملاحظة: الروبوت 3.2 يدخل سمات جديدة: android:largestWidthLimitDp ، android:largestWidthLimitDp ، android:largestWidthLimitDp . إذا كنت بصدد تطوير تطبيقك لنظام التشغيل أندرويد 3.2 والإصدارات الأحدث، فيجب استخدام هذه السمات للإعلان عن دعم حجم الشاشة، بدلا من السمات استنادا إلى أحجام الشاشة العامة.


لمزيد من المعلومات حول كيفية دعم أحجام الشاشة المختلفة بشكل صحيح بحيث يمكنك تجنب استخدام وضع توافق الشاشة مع التطبيق الخاص بك، وقراءة دعم شاشات متعددة .


الصفات:

android:resizeable
يشير إلى ما إذا كان التطبيق ريزيزيبل لأحجام الشاشة المختلفة. هذه السمة صحيحة، بشكل افتراضي. إذا تم تعيين فالس، سيقوم النظام بتشغيل التطبيق الخاص بك في وضع التوافق الشاشة على شاشات كبيرة.
تم إيقاف هذه السمة . وقد تم تقديمه للمساعدة في نقل التطبيقات من الروبوت 1.5 إلى 1.6، عندما تم تقديم الدعم لشاشات متعددة لأول مرة. يجب عدم استخدامه.

android:smallScreens

يشير إلى ما إذا كان التطبيق يدعم أصغر شكل-- شكل العوامل. يتم تعريف شاشة صغيرة على أنها واحدة مع نسبة العرض إلى الارتفاع أصغر من "عادي" (التقليدية هفغا) الشاشة. تطبيق لا يدعم الشاشات الصغيرة لن تكون متاحة لأجهزة الشاشة الصغيرة من الخدمات الخارجية (مثل جوجل اللعب)، لأن هناك القليل من منصة يمكن القيام به لجعل مثل هذا التطبيق العمل على شاشة أصغر. هذا هو "true" افتراضيا.
android:normalScreens
يشير إلى ما إذا كان التطبيق يدعم عوامل شكل الشاشة "العادية". تقليديا هذا هو هفغا شاشة متوسطة الكثافة، ولكن وفغا منخفضة الكثافة و وفغا عالية الكثافة تعتبر أيضا أن تكون طبيعية. هذه السمة هي "ترو" بشكل افتراضي.
android:largeScreens
يشير إلى ما إذا كان التطبيق يدعم أكبر شكل-- شكل العوامل. يتم تعريف شاشة كبيرة على أنها الشاشة التي هي أكبر بكثير من شاشة الهاتف "عادي"، وبالتالي قد تتطلب بعض العناية الخاصة على جزء التطبيق للاستفادة من ذلك، على الرغم من أنها قد تعتمد على تغيير حجم من قبل النظام لملء شاشة.
تختلف القيمة الافتراضية لهذا في الواقع بين بعض الإصدارات، لذلك فمن الأفضل إذا كنت تعلن صراحة هذه السمة في جميع الأوقات. حذار أن وضعه "كاذبة" عموما تمكين وضع التوافق الشاشة .

android:xlargeScreens

يشير إلى ما إذا كان التطبيق يدعم أشكال شكل شاشة كبيرة اضافية. يتم تعريف شاشة زلارج على أنها شاشة أكبر بكثير من شاشة "كبيرة"، مثل قرص (أو شيء أكبر)، وقد تتطلب رعاية خاصة من جانب التطبيق للاستفادة منه بشكل جيد، على الرغم من أنه قد يعتمد على تغيير الحجم من قبل النظام لملء الشاشة.
تختلف القيمة الافتراضية لهذا في الواقع بين بعض الإصدارات، لذلك فمن الأفضل إذا كنت تعلن صراحة هذه السمة في جميع الأوقات. حذار أن وضعه "كاذبة" عموما تمكين وضع التوافق الشاشة .

تم إدخال هذه السمة في مستوى أبي 9.


android:anyDensity

يشير إلى ما إذا كان التطبيق يتضمن موارد لاستيعاب أي كثافة شاشة.
بالنسبة للتطبيقات التي تدعم أندرويد 1.6 (أبي ليفيل 4) وأعلى، يكون هذا "ترو" بشكل افتراضي ويجب عدم تعيينه "فالس" إلا إذا كنت متأكدا تماما من ضرورة عمل طلبك. الوقت الوحيد الذي قد يكون ضروريا لتعطيل هذا هو إذا كان التطبيق الخاص بك يتلاعب الصور النقطية مباشرة (انظر وثيقة دعم شاشات متعددة لمزيد من المعلومات).

android:requiresSmallestWidthDp

يحدد الحد الأدنى من الحجم الصغير المطلوب. أصغر حجم هو أقصر البعد من مساحة الشاشة (في وحدات dp ) التي يجب أن تكون متاحة لواجهة المستخدم التطبيق الخاص بك، وهذا هو، أقصر من بعدين الشاشة المتاحة. لذلك، لكي يعتبر الجهاز متوافق مع التطبيق الخاص بك، يجب أن يكون أصغر عرض للجهاز يساوي أو أكبر من هذه القيمة. (عادة ما تكون القيمة التي تقدمها لهذا العرض هي "العرض الأصغر" الذي يدعمه التنسيق، بغض النظر عن الاتجاه الحالي للشاشة.)
على سبيل المثال، شاشة الهاتف نموذجية لديها أصغر من 320dp، 7 "قرص يحتوي على أصغر من 600dp، و 10" قرص يحتوي على أصغر من 720dp. وعادة ما تكون هذه القيم أصغر قيمة لأنها هي أقصر بعد في المساحة المتوفرة للشاشة.

الحجم الذي تتم مقارنة قيمتك يأخذ بعين الاعتبار الزينة الشاشة ونظام واجهة المستخدم. على سبيل المثال، إذا كان الجهاز يحتوي على بعض عناصر واجهة المستخدم المستمرة على الشاشة، فإن النظام يعلن أصغر عرض للجهاز على أنه أصغر من حجم الشاشة الفعلي، وهو ما يمثل عناصر واجهة المستخدم هذه لأن تلك هي وحدات بكسل الشاشة غير متوفرة لواجهة المستخدم. وبالتالي، يجب أن تكون القيمة التي تستخدمها الحد الأدنى للعرض المطلوب من قبل التخطيط الخاص بك، بغض النظر عن التوجه الحالي للشاشة.


إذا تم تغيير حجم التطبيق بشكل صحيح لأحجام الشاشة الصغيرة (وصولا إلى الحجم الصغير أو الحد الأدنى لعرض 320dp)، فلن تحتاج إلى استخدام هذه السمة. وإلا، يجب استخدام قيمة لهذه السمة التي تطابق أصغر قيمة يستخدمها تطبيقك لأصغر مؤهل لعرض الشاشة ( sw<N>dp ).


تحذير: نظام أندرويد لا تولي اهتماما لهذه السمة، لذلك لا يؤثر على كيفية التطبيق الخاص بك يتصرف في وقت التشغيل. بدلا من ذلك، يتم استخدامه لتمكين تصفية للتطبيق الخاص بك على خدمات مثل جوجل اللعب. ومع ذلك، لا يدعم غوغل بلاي حاليا هذه السمة للتصفية (على نظام التشغيل أندرويد 3.2)، لذا يجب عليك الاستمرار في استخدام سمات الحجم الأخرى إذا كان تطبيقك لا يدعم الشاشات الصغيرة.


تم إدخال هذه السمة في مستوى أبي 13.


android:compatibleWidthLimitDp

تسمح لك هذه السمة بتمكين وضع توافق الشاشة كميزة اختيارية للمستخدم من خلال تحديد الحد الأقصى "أصغر عرض للشاشة" الذي تم تصميم التطبيق عليه. إذا كان الجانب الأصغر من شاشة الجهاز المتاحة أكبر من قيمتك هنا، يمكن للمستخدمين تثبيت التطبيق الخاص بك، ولكن يتم عرضها لتشغيله في وضع توافق الشاشة. بشكل افتراضي، يتم تعطيل وضع توافق الشاشة ويتم تغيير حجم تخطيطك لتتناسب مع الشاشة كالمعتاد، ولكن يتوفر زر في شريط النظام الذي يسمح للمستخدم بتبديل وضع توافق الشاشة وإيقاف تشغيله.
إذا كان تطبيقك متوافق مع جميع أحجام الشاشة وتغيير حجم تخطيطه بشكل صحيح، فلن تحتاج إلى استخدام هذه السمة.

ملاحظة: حاليا، وضع التوافق الشاشة يحاكي فقط شاشات الهاتف مع عرض 320dp، لذلك لا يتم تطبيق وضع التوافق الشاشة إذا القيمة الخاصة بك android:compatibleWidthLimitDp كومباتيبلويدليميتدب أكبر من 320.


تم إدخال هذه السمة في مستوى أبي 13.


android:largestWidthLimitDp

تتيح لك هذه السمة إمكانية تمكين وضع توافق الشاشة من خلال تحديد الحد الأقصى "عرض الشاشة الأصغر" الذي تم تصميم تطبيقك عليه. إذا كان الجانب الأصغر من شاشة الجهاز المتوفرة أكبر من قيمتك هنا، يتم تشغيل التطبيق في وضع توافق الشاشة دون أي وسيلة للمستخدم لتعطيله.
إذا كان تطبيقك متوافق مع جميع أحجام الشاشة وتغيير حجم تخطيطه بشكل صحيح، فلن تحتاج إلى استخدام هذه السمة. خلاف ذلك، يجب عليك أولا النظر في استخدام android:compatibleWidthLimitDp السمة. يجب عليك استخدام android:largestWidthLimitDp سمة android:largestWidthLimitDp فقط عندما يتم كسر التطبيق وظيفيا عند تغيير حجم للشاشات الكبيرة ووضع التوافق الشاشة هو السبيل الوحيد الذي يجب على المستخدمين استخدام التطبيق الخاص بك.

ملاحظة: حاليا، وضع التوافق الشاشة يحاكي فقط شاشات الهاتف مع عرض 320dp، لذلك لا يتم تطبيق وضع التوافق الشاشة إذا القيمة الخاصة بك android:largestWidthLimitDp أكبر أكبر من 320.


تم إدخال هذه السمة في مستوى أبي 13.


قدم في:

أبي ليفيل 4
أنظر أيضا:
دعم شاشات متعددة
DisplayMetrics



**-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*



<الاستخدامات التكوين>

بناء الجملة:

<uses-configuration>

SYNTAX:
<uses-configuration
  android:reqFiveWayNav=["true" | "false"]
  android:reqHardKeyboard=["true" | "false"]
  android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
  android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
  android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />

الواردة في:

<manifest>
وصف:
يشير إلى ما الأجهزة والبرمجيات ميزات يتطلب التطبيق. على سبيل المثال، قد يحدد التطبيق أنه يتطلب لوحة مفاتيح فعلية أو جهاز تنقل معين، مثل كرة التتبع. يتم استخدام مواصفات لتجنب تثبيت التطبيق على الأجهزة حيث أنها لن تعمل.
ملاحظة: يجب ألا تستخدم معظم التطبيقات علامة البيان هذه. يجب دائما دعم المدخلات مع لوحة الاتجاه (د وسادة) من أجل مساعدة المستخدمين ضعاف البصر وأجهزة الدعم التي توفر مدخلات لوحة د بالإضافة إلى أو بدلا من اللمس. للحصول على معلومات حول كيفية دعم إدخال لوحة البيانات في تطبيقك، اطلع على تمكين ميزة التركيز البؤري للملاحة . إذا كان التطبيق الخاص بك على الاطلاق لا يمكن أن تعمل دون شاشة تعمل باللمس، ثم بدلا من ذلك استخدام علامة <uses-feature> لإعلان نوع الشاشة التي تعمل باللمس المطلوبة، بدءا من "android.hardware.faketouch" للأحداث نمط اللمس الأساسية إلى أنواع أكثر تقدما تعمل باللمس مثل "android.hardware.touchscreen.multitouch.jazzhand" للحصول على مدخلات متميزة من أصابع متعددة.

الصفات:

android:reqFiveWayNav
ما إذا كان التطبيق يتطلب التحكم في الملاحة من خمسة اتجاهات - " true " إذا كان يفعل، و " false " إن لم يكن. التحكم في اتجاهين هو واحد التي يمكن أن تتحرك اختيار أعلى أو أسفل أو اليمين، أو اليسار، ويوفر أيضا وسيلة للاستدعاء التحديد الحالي. يمكن أن يكون D- وسادة (لوحة الاتجاه)، كرة التتبع، أو جهاز آخر.
إذا كان تطبيق يتطلب عنصر تحكم اتجاهي، ولكن ليس عنصر تحكم لنوع معين، فإنه يمكن تعيين هذه السمة إلى " reqNavigation " وتجاهل السمة reqNavigation . ومع ذلك، إذا كان يتطلب نوع معين من التحكم الاتجاهي، فإنه يمكن تجاهل هذه السمة وتعيين reqNavigation بدلا من ذلك.

android:reqHardKeyboard

ما إذا كان التطبيق يتطلب لوحة مفاتيح الأجهزة - " true " إذا كان يفعل، و " false " إن لم يكن.
android:reqKeyboardType
نوع لوحة المفاتيح يتطلب التطبيق، إن وجدت على الإطلاق. لا تميز هذه السمة بين لوحات مفاتيح الأجهزة والبرامج. إذا كان هناك حاجة إلى لوحة مفاتيح الأجهزة من نوع معين، حدد النوع هنا وأيضا تعيين السمة reqHardKeyboard إلى " reqHardKeyboard ".
يجب أن تكون القيمة إحدى السلاسل التالية:
ValueDescription
"undefined"The application does not require a keyboard. (A keyboard requirement is not defined.) This is the default value.
"nokeys"The application does not require a keyboard.
"qwerty"The application requires a standard QWERTY keyboard.
"twelvekey"The application requires a twelve-key keypad, like those on most phones — with keys for the digits from 0 through 9plus star (*) and pound (#) keys.
القيمة وصف
" undefined " لا يتطلب التطبيق لوحة المفاتيح. (لم يتم تعريف شرط لوحة المفاتيح.) هذه هي القيمة الافتراضية.
" nokeys " لا يتطلب التطبيق لوحة المفاتيح.
" qwerty " يتطلب تطبيق لوحة المفاتيح القياسية كويرتي.
" twelvekey " يتطلب التطبيق لوحة مفاتيح اثني عشر مفتاح، مثل تلك الموجودة على معظم الهواتف - مع مفاتيح للأرقام من 0 إلى 9 بالإضافة إلى نجمة ( * ) والرطل ( # ) مفاتيح.
android:reqNavigation
جهاز الملاحة المطلوبة من قبل التطبيق، إن وجدت. يجب أن تكون القيمة إحدى السلاسل التالية:


ValueDescription
"undefined"The application does not require any type of navigation control. (The navigation requirement is not defined.) This is the default value.
"nonav"The application does not require a navigation control.
"dpad"The application requires a D-pad (directional pad) for navigation.
"trackball"The application requires a trackball for navigation.
"wheel"The application requires a navigation wheel.

القيمة وصف

" undefined " التطبيق لا يتطلب أي نوع من التحكم في الملاحة. (لم يتم تعريف متطلبات الملاحة.) هذه هي القيمة الافتراضية.
" nonav " التطبيق لا يتطلب مراقبة الملاحة.
" dpad " يتطلب تطبيق D- وسادة (لوحة الاتجاه) للملاحة.
" trackball " يتطلب التطبيق كرة التتبع للملاحة.
" wheel " يتطلب التطبيق عجلة الملاحة.
إذا كان تطبيق يتطلب عنصر تحكم ملاحي، ولكن لا يهم نوع التحكم بالضبط، فإنه يمكن تعيين السمة reqFiveWayNav إلى " reqFiveWayNav " بدلا من تعيين هذا واحد.

android:reqTouchScreen

نوع شاشة تعمل باللمس يتطلب التطبيق، إن وجدت على الإطلاق. يجب أن تكون القيمة إحدى السلاسل التالية:


ValueDescription
"undefined"The application doesn't require a touch screen. (The touch screen requirement is undefined.) This is the default value.
"notouch"The application doesn't require a touch screen.
"stylus"The application requires a touch screen that's operated with a stylus.
"finger"The application requires a touch screen that can be operated with a finger.
Note: If some type of touch input is required for your app, you should instead use the <uses-feature> tag to declare the required touchscreen type, beginning with "android.hardware.faketouch" for basic touch-style events.

القيمة وصف

" undefined " التطبيق لا يتطلب شاشة تعمل باللمس. (شرط الشاشة التي تعمل باللمس غير محدد.) هذه هي القيمة الافتراضية.
" notouch " التطبيق لا يتطلب شاشة تعمل باللمس.
" stylus " يتطلب التطبيق شاشة تعمل باللمس التي تعمل مع القلم.
" finger " يتطلب التطبيق شاشة تعمل باللمس التي يمكن تشغيلها مع إصبع.
ملاحظة: إذا كان هناك نوع من الإدخال باللمس مطلوب لتطبيقك، يجب بدلا من ذلك استخدام علامة <uses-feature> لإعلان نوع شاشة اللمس المطلوبة، بدءا من "android.hardware.faketouch" للأحداث الأساسية التي تعمل باللمس.

قدم في:

أبي ليفيل 3
أنظر أيضا:
configChanges للعنصر <activity>
ConfigurationInfo





**-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*


<استخدامات ميزة>
في هذه الوثيقة
جوجل اللعب والترشيح القائم على ميزة
تصفية استنادا إلى الميزات المعلنة صراحة
التصفية استنادا إلى الميزات الضمنية
خاص التعامل مع ميزة بلوتوث
اختبار الميزات المطلوبة من قبل التطبيق الخاص بك
ميزات المرجع
ميزات الأجهزة
ميزات البرنامج
الأذونات التي تنطوي على متطلبات الميزة

غوغل بلاي فيلترينغ

يستخدم غوغل بلاي العناصر <uses-feature> المعلنة في بيان التطبيق لتصفية تطبيقك من الأجهزة التي لا تلبي متطلبات ميزات الأجهزة والبرامج.

من خلال تحديد الميزات التي يتطلبها تطبيقك، يمكنك تمكين غوغل بلاي من تقديم تطبيقك فقط إلى المستخدمين الذين تتوافق أجهزتهم مع متطلبات ميزة التطبيق، بدلا من تقديمه إلى جميع المستخدمين.

للحصول على معلومات مهمة حول كيفية استخدام غوغل بلاي للميزات كأساس للتصفية، يرجى قراءة غوغل بلاي والترشيح المستند إلى الميزات أدناه.
بناء الجملة:

<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />


وصف:
يعلن جهاز واحد أو ميزة البرنامج الذي يستخدمه التطبيق.
الغرض من إعلان <uses-feature> هو إبلاغ أي كيان خارجي بمجموعة من ميزات الأجهزة والبرمجيات التي يعتمد عليها تطبيقك. يقدم العنصر السمة required التي تمكنك من تحديد ما إذا كان التطبيق الخاص بك يتطلب ولا يمكن أن تعمل دون ميزة المعلنة، أو ما إذا كان يفضل أن يكون ميزة ولكن يمكن أن تعمل دون ذلك. نظرا لأن دعم الميزة يمكن أن يختلف عبر أجهزة أندرويد، فإن عنصر <uses-feature> يؤدي دورا مهما في السماح لتطبيق ما بوصف الميزات المتغيرة للجهاز التي يستخدمها.

مجموعة من الميزات المتوفرة التي يعلن التطبيق الخاص بك يتوافق مع مجموعة الثوابت ميزة التي توفرها الروبوت PackageManager ، والتي يتم سرد للراحة في أقسام مرجع الميزات في الجزء السفلي من هذا المستند.

يجب تحديد كل عنصر في عنصر <uses-feature> منفصل؛ لذلك إذا كان تطبيقك يتطلب ميزات متعددة، فسيعلن عن عناصر <uses-feature> فيتور متعددة. على سبيل المثال، التطبيق الذي يتطلب كلا من ميزات البلوتوث والكاميرا في الجهاز سيعلن عن هذين العنصرين:

<uses-feature android:name="android.hardware.bluetooth" />
<uses-feature android:name="android.hardware.camera" />
بشكل عام، يجب أن تتأكد دائما من إعلان عناصر <uses-feature> لكافة الميزات التي يتطلبها تطبيقك.

العناصر المعلنة <uses-feature> وسيس <uses-feature> هي معلومات إعلامية فقط، وهذا يعني أن نظام أندرويد نفسه لا يتحقق من وجود ميزة دعم مطابقة على الجهاز قبل تثبيت أحد التطبيقات. ومع ذلك، قد تتحقق الخدمات الأخرى (مثل غوغل بلاي) أو التطبيقات من <uses-feature> للتطبيقات كجزء من التعامل مع طلبك أو التفاعل معه. لهذا السبب، من المهم جدا أن تعلن جميع الميزات (من القائمة أدناه) التي يستخدمها التطبيق الخاص بك.

بالنسبة لبعض الميزات، قد توجد سمة معينة تسمح لك بتعريف إصدار من الميزة، مثل إصدار أوبين غل المستخدم (المعلن مع glEsVersion ). يتم الإعلان عن الميزات الأخرى التي إما تفعل أو لا وجود لجهاز، مثل كاميرا، باستخدام السمة نيم.

على الرغم من أن العنصر <uses-feature> minSdkVersion <uses-feature> يتم تنشيطه فقط للأجهزة التي تقوم بتشغيل أبي ليفيل 4 أو أعلى، فمن المستحسن تضمين هذه العناصر لجميع التطبيقات، حتى إذا كان minSdkVersion هو "3" أو أقل. ستتجاهل الأجهزة التي تعمل بإصدارات أقدم من النظام الأساسي العنصر ببساطة.

ملاحظة: عند إعلان ميزة، تذكر أنه يجب أيضا طلب الأذونات حسب الاقتضاء. على سبيل المثال، يجب أن لا تزال تطلب إذن CAMERA قبل التطبيق الخاص بك يمكن الوصول إلى أبي الكاميرا. طلب الإذن منح التطبيق الخاص بك الوصول إلى الأجهزة والبرمجيات المناسبة، في حين أن إعلان الميزات المستخدمة من قبل التطبيق الخاص بك يضمن التوافق الجهاز المناسب.

الصفات:
android:name
يحدد جهاز واحد أو ميزة برنامج يستخدمه التطبيق، كسلسلة واصف. يتم سرد قيم السمة الصالحة في قسم ميزات الأجهزة وأجزاء البرامج . وتكون قيم السمات هذه حساسة لحالة الأحرف.
android:required
قيمة منطقية تشير إلى ما إذا كان التطبيق يتطلب الميزة المحددة في android:name .
عندما تعلن android:required="true" لميزة، كنت تحدد أن التطبيق لا يمكن أن تعمل، أو لم يتم تصميمها للعمل ، عندما ميزة محددة غير موجودة على الجهاز.
عندما تعلن android:required="false" لميزة، فهذا يعني أن التطبيق يفضل استخدام ميزة إذا كان موجودا على الجهاز، ولكن تم تصميمه للعمل دون ميزة محددة ، إذا لزم الأمر.
القيمة الافتراضية android:required إذا لم يعلن هو "true" .

android:glEsVersion
إصدار برنامج أوبنغل إس المطلوب من قبل التطبيق. وتمثل البتات الأعلى 16 بتة العدد الأكبر بينما تمثل البتات الأقل 16 بتة العدد الصغير. على سبيل المثال، لتحديد برنامج أوبنغل إس الإصدار 2.0، يمكنك تعيين القيمة ك "0x00020000"، أو لتحديد أوبنغل إس 3.2، يمكنك تعيين القيمة ك "0x00030002".
يجب أن يحدد التطبيق على الأكثر android:glEsVersion واحد android:glEsVersion سمة android:glEsVersion في بيانها. إذا كان يحدد أكثر من واحد، يتم استخدام android:glEsVersion مع أعلى قيمة عدديا وأية قيم أخرى يتم تجاهلها.

إذا كان التطبيق لا يحدد android:glEsVersion سمة android:glEsVersion ، ثم يفترض أن التطبيق يتطلب فقط برنامج أوبنغل إس 1.0، وهو مدعوم من قبل جميع الأجهزة التي تعمل بنظام التشغيل أندرويد.

يمكن للتطبيق أن نفترض أنه إذا كان يدعم منصة إصدار برنامج أوبنغل إس معين، كما أنها تدعم جميع إصدارات أوبنغل إس أقل عدديا. ولذلك، فإن التطبيق الذي يتطلب كل من برنامج أوبنغل إس 1.0 و أوبنغل إس 2.0 يجب أن يحدد أنه يتطلب برنامج أوبنغل إس 2.0.

أحد التطبيقات التي يمكن أن تعمل مع أي من العديد من إصدارات برنامج أوبنغل إس يجب أن تحدد فقط العدد الأدنى عدديا من برنامج أوبنغل إس التي يتطلبها. (يمكن أن تحقق في وقت التشغيل ما إذا كان مستوى أعلى من برنامج أوبنغل إس هو متاح.)

لمزيد من المعلومات حول استخدام برنامج أوبنغل إس، بما في ذلك كيفية التحقق من إصدار أوبنغل إس المدعوم في وقت التشغيل، راجع دليل أوبنغل إس أبي .

قدم في:
أبي ليفيل 4
أنظر أيضا:
PackageManager
FeatureInfo
ConfigurationInfo
<uses-permission>
الفلاتر على غوغل بلاي
جوجل اللعب والترشيح القائم على ميزة
يقوم غوغل بلاي بتصفية التطبيقات المرئية للمستخدمين، بحيث يمكن للمستخدمين رؤية وتنزيل التطبيقات المتوافقة مع أجهزتهم فقط. واحدة من الطرق التي تقوم بتصفية التطبيقات هي من خلال توافق الميزة.

لتحديد توافق ميزة التطبيق مع جهاز مستخدم معين، يقارن غوغل بلاي ما يلي:

الميزات المطلوبة من قبل التطبيق - تطبيق يعلن الميزات في <uses-feature> العناصر في بيانها 
مع...
الميزات المتوفرة على الجهاز، في الأجهزة أو البرامج - جهاز تقارير الميزات التي يدعمها كقراءة فقط خصائص النظام.
لضمان مقارنة دقيقة من الميزات، يوفر مدير حزمة الروبوت مجموعة مشتركة من الثوابت ميزة أن كل من التطبيقات والأجهزة تستخدم للإعلان عن متطلبات الميزة والدعم. يتم سرد الثوابت ميزة متوفرة في أقسام مرجع الميزات في الجزء السفلي من هذا المستند، وفي وثائق فئة PackageManager .

عندما يقوم المستخدم بتشغيل غوغل بلاي، يستعلم التطبيق مدير الحزمة لقائمة الميزات المتوفرة على الجهاز عن طريق الاتصال getSystemAvailableFeatures() . تطبيق مخزن ثم يمر قائمة الميزات تصل إلى غوغل بلاي عند إنشاء جلسة للمستخدم.

في كل مرة تحمل فيها تطبيق إلى وحدة تحكم غوغل بلاي، يقوم غوغل بلاي بفحص ملف بيان التطبيق. وهي تبحث عن عناصر <uses-sdk> وتقيمها بالاقتران مع عناصر أخرى، في بعض الحالات، مثل <uses-sdk> و <uses-permission> <uses-sdk> <uses-permission> العناصر. بعد إنشاء مجموعة التطبيق من الميزات المطلوبة، فإنه يخزن تلك القائمة داخليا كما البيانات الوصفية المرتبطة .apk التطبيق وإصدار التطبيق.

عندما يبحث المستخدم أو يتصفح للتطبيقات باستخدام تطبيق غوغل بلاي، تقارن الخدمة الميزات التي يحتاجها كل تطبيق مع الميزات المتوفرة على جهاز المستخدم. إذا كانت جميع الميزات المطلوبة للتطبيق موجودة على الجهاز، فإن غوغل بلاي يسمح للمستخدم بمشاهدة التطبيق ويحتمل تنزيله. إذا لم يتم دعم أي ميزة مطلوبة من قبل الجهاز، فسيقوم غوغل بلاي بتصفية التطبيق بحيث لا يكون مرئيا للمستخدم ولا يتوفر للتنزيل.

نظرا لأن الميزات التي تعلنها في <uses-feature> العناصر تؤثر بشكل مباشر على كيفية تصفية غوغل بلاي للتطبيق، فمن المهم أن تفهم كيف يقيم غوغل بلاي بيان التطبيق ويحدد مجموعة الميزات المطلوبة. توفر الأقسام أدناه المزيد من المعلومات.

تصفية استنادا إلى الميزات المعلنة صراحة
ميزة المعلن عنها صراحة هي التي يعلنها تطبيقك في عنصر <uses-feature> . يمكن أن يتضمن إعلان الميزة android:required=["true" | "false"] android:required=["true" | "false"] (إذا كنت تقوم بتجميع مستوى واجهة برمجة التطبيقات 5 أو أعلى)، مما يتيح لك تحديد ما إذا كان التطبيق يتطلب الميزة مطلقا ولا يمكن أن يعمل بشكل صحيح بدونه ( "true" )، أو ما إذا كان التطبيق يفضل استخدام الميزة إذا كان متوفرا، ولكن تم تصميمه لتشغيل بدونه ( "false" ).

يتعامل غوغل بلاي مع الميزات المعلنة صراحة بهذه الطريقة:

إذا تم إعلان الميزة صراحة على أنها مطلوبة، يضيف غوغل بلاي الميزة إلى قائمة الميزات المطلوبة للتطبيق. ثم يقوم بتصفية التطبيق من المستخدمين على الأجهزة التي لا توفر هذه الميزة. فمثلا:
  • <uses-feature android:name="android.hardware.camera" android:required="true" />
  • إذا تم إعلان الميزة صراحة على أنها غير مطلوبة، فلن يضيف غوغل بلاي هذه الميزة إلى قائمة الميزات المطلوبة. لهذا السبب، لا يتم النظر في ميزة غير مطلوبة المعلنة صراحة عند تصفية التطبيق. حتى إذا كان الجهاز لا يوفر الميزة المعلنة، فإن غوغل بلاي لا تزال تنظر في تطبيق متوافق مع الجهاز وسوف تظهر للمستخدم، ما لم تطبق قواعد تصفية أخرى. فمثلا:
  • :
    <uses-feature android:name="android.hardware.camera" android:required="false" />
ذا تم الإعلان عن إحدى الميزات صراحة، ولكن بدون سمة android:required ، يفترض غوغل بلاي أن الميزة مطلوبة وتضع التصفية على ذلك.
بشكل عام، إذا تم تصميم التطبيق الخاص بك لتشغيل على الروبوت 1.6 والإصدارات السابقة، android:required السمة android:required غير متوفرة في أبي وجوجل اللعب يفترض أن أي وجميع <uses-feature> الإعلانات مطلوبة.

ملاحظة: من خلال إعلان ميزة صريحة وتتضمن سمة android:required="false" ، يمكنك تعطيل جميع عمليات التصفية على غوغل بلاي بشكل فعال للميزة المحددة.

التصفية استنادا إلى الميزات الضمنية
ميزة ضمنية هي إحدى التطبيقات التي يتطلبها التطبيق لكي تعمل بشكل صحيح، ولكن لم يتم الإعلان عنها في عنصر <uses-feature> في ملف البيان. بالمعنى الدقيق للكلمة، يجب على كل تطبيق أن يعلن دائما جميع الميزات التي يستخدمها أو يتطلبها، لذلك ينبغي اعتبار عدم وجود إعلان عن ميزة يستخدمها أحد التطبيقات خطأ. ومع ذلك، وكضمان للمستخدمين والمطورين، يبحث غوغل بلاي عن الميزات الضمنية في كل تطبيق، كما يقوم بإعداد فلاتر لتلك الميزات، كما هو الحال بالنسبة إلى الميزة المعلنة صراحة.

قد يتطلب تطبيق ميزة ولكن لا يعلن ذلك بسبب:

تم تجميع التطبيق ضد نسخة قديمة من مكتبة أندرويد (أندرويد 1.5 أو إصدار أقدم) ولم يكن العنصر <uses-feature> متاحا.
افترض المطور بشكل غير صحيح أن الميزة ستكون موجودة على جميع الأجهزة وكان الإعلان غير ضروري.
حذف المطور بيان الميزة عن طريق الخطأ.
أعلن المطور الميزة صراحة، ولكن الإعلان لم يكن صالحا. على سبيل المثال، خطأ إملائي في اسم العنصر <uses-feature> أو قيمة سلسلة غير معروفة لسمة android:name نيم سيؤدي إلى إبطال بيان الميزة.
لحساب الحالات المذكورة أعلاه، يحاول غوغل بلاي اكتشاف متطلبات الميزة الضمنية للتطبيق عن طريق فحص العناصر الأخرى المعلنة في ملف البيان، وتحديدا العناصر <uses-permission> .

إذا طلب أحد التطبيقات أذونات ذات صلة بالأجهزة، يفترض غوغل بلاي أن التطبيق يستخدم ميزات الأجهزة الأساسية، وبالتالي يتطلب هذه الميزات ، على الرغم من أنه قد لا يكون هناك تطابق مع <uses-feature> ديكلاراتيونس. بالنسبة إلى هذه الأذونات، يضيف غوغل بلاي ميزات الأجهزة الأساسية إلى البيانات الوصفية التي يخزنها للتطبيق ويضع الفلاتر لها.

على سبيل المثال، إذا طلب أحد التطبيقات إذن CAMERA ولكنه لا يعلن عن عنصر <uses-feature> ل android.hardware.camera ، فإن غوغل بلاي يعتبر أن التطبيق يتطلب كاميرا ويجب ألا يظهر للمستخدمين الذين لا تقدم أجهزةهم الة تصوير.

إذا كنت لا تريد تصفية غوغل بلاي استنادا إلى ميزة ضمنية محددة، فيمكنك تعطيل هذا السلوك. ولإجراء ذلك، يمكنك الإعلان عن العنصر بوضوح في عنصر <uses-feature> وتضمين سمة android:required="false" . على سبيل المثال، لتعطيل التصفية المستمدة من إذن CAMERA ، سوف تعلن الميزة كما هو موضح أدناه.

<uses-feature android:name="android.hardware.camera" android:required="false" />

من المهم أن تفهم أن الأذونات التي تطلبها في عناصر <uses-permission> يمكن أن تؤثر بشكل مباشر على كيفية تصفية غوغل بلاي لتطبيقك. قسم المرجع الأذونات التي تتضمن متطلبات الميزة تسرد مجموعة كاملة من الأذونات التي تنطوي على متطلبات الميزة وبالتالي تصفية الزناد.

خاص التعامل مع ميزة بلوتوث
ويطبق غوغل بلاي قواعد مختلفة قليلا عما هو موضح أعلاه، عند تحديد التصفية للبلوتوث.

إذا كان أحد التطبيقات يعلن عن إذن بليتوث في عنصر <uses-permission> ، ولكنه لا يعلن صراحة ميزة البلوتوث في عنصر <uses-feature> ، فإن غوغل بلاي يتحقق من إصدار (إصدارات) نظام التشغيل أندرويد الذي يكون التطبيق عليه مصممة للتشغيل، كما هو محدد في عنصر <uses-sdk> .

كما هو مبين في الجدول أدناه، جوجل اللعب تمكن تصفية لميزة بلوتوث فقط إذا كان التطبيق يعلن أدنى أو استهداف منصة كما الروبوت 2.0 (أبي مستوى 5) أو أعلى. ومع ذلك، لاحظ أن غوغل بلاي يطبق القواعد العادية للتصفية عندما يعلن التطبيق بوضوح عن ميزة البلوتوث في عنصر <uses-feature> .

جدول 1. كيفية تحديد غوغل بلاي لمتطلبات ميزة بليتوث لتطبيق يطلب إذن بليتوث ولكنه لا يعلن ميزة بليتوث في عنصر <uses-feature> .

إذا كان minSdkVersion هو ... أو targetSdkVersion هو نتيجة
<= 4 (أو لم يتم الإعلان عن الاستخدامات-سك) <= 4 لن يقوم غوغل بلاي بتصفية التطبيق من أية أجهزة استنادا إلى دعمهم المعلن عن ميزة android.hardware.bluetooth .
<= 4 > = 5 غوغل بلاي فلاتر التطبيق من أي الأجهزة التي لا تدعم ميزة android.hardware.bluetooth (بما في ذلك الإصدارات القديمة).
> = 5 > = 5
توضح الأمثلة أدناه تأثيرات التصفية المختلفة، استنادا إلى كيفية تعامل غوغل بلاي مع ميزة البلوتوث.


If minSdkVersion is ...or targetSdkVersion isResult
<=4 (or uses-sdk is not declared)<=4Google Play will not filter the application from any devices based on their reported support for the android.hardware.bluetooth feature.
<=4>=5Google Play filters the application from any devices that do not support the android.hardware.bluetooth feature (including older releases).
>=5>=5
توضح الأمثلة أدناه تأثيرات التصفية المختلفة، استنادا إلى كيفية تعامل غوغل بلاي مع ميزة البلوتوث.

في المثال الأول، أحد التطبيقات المصممة للتشغيل على مستويات أبي القديمة يعلن عن إذن بليتوث، ولكنه لا يعلن ميزة بليتوث في عنصر <uses-feature> .
النتيجة: لا يقوم غوغل بلاي بتصفية التطبيق من أي جهاز.
.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...</manifest>
في المثال الثاني، أدناه، نفس التطبيق أيضا يعلن مستوى أبي الهدف من "5".
النتيجة: يفترض غوغل بلاي الآن أن هذه الميزة مطلوبة وستعمل على تصفية التطبيق من جميع الأجهزة التي لا تبلغ عن دعم البلوتوث، بما في ذلك الأجهزة التي تستخدم إصدارات قديمة من النظام الأساسي.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...</manifest>
هنا نفس التطبيق الآن يعلن على وجه التحديد ميزة بلوتوث.
النتيجة: متطابقة مع المثال السابق (يتم تطبيق التصفية).
.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...</manifest>
وأخيرا، في الحالة أدناه، نفس التطبيق يضيف android:required="false" السمة android:required="false" .
النتيجة: يعطل غوغل بلاي التصفية استنادا إلى دعم ميزة البلوتوث، لجميع الأجهزة.
.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...</manifest>

اختبار الميزات المطلوبة من قبل التطبيق الخاص بك

يمكنك استخدام أداة aapt ، المضمنة في سك أندرويد، لتحديد كيفية تصفية غوغل بلاي للتطبيق، استنادا إلى الميزات والأذونات المعلنة. للقيام بذلك، قم بتشغيل aapt باستخدام الأمر aapt . يؤدي هذا إلى تحليل بيان تطبيقك وتطبيق القواعد نفسها التي يستخدمها غوغل بلاي لتحديد الميزات التي يتطلبها تطبيقك.


لاستخدام الأداة، اتبع الخطوات التالية:


أولا، بناء وتصدير التطبيق الخاص بك باعتبارها .apk غير موقعة. إذا كنت تقوم بتطوير في الروبوت ستوديو، بناء التطبيق الخاص بك مع غرادل:

افتح المشروع وحدد تشغيل> تعديل التهيئات .

حدد علامة الجمع بالقرب من الزاوية العلوية اليمنى من نافذة تكوين / تصحيح أخطاء التصحيح .

حدد غرادل.

أدخل Unsigned APK في الاسم .

اختر الوحدة النمطية الخاصة بك من قسم مشروع غرادل .

أدخل assemble في المهام .

حدد موافق لإكمال التهيئة الجديدة.

تأكد من تحديد تهيئة تشغيل أبك غير الموقعة في شريط الأدوات وحدد تشغيل> تشغيل "أبك غير الموقعة" .

يمكنك العثور على .apk غير الموقعة في الدليل < ProjectName >/app/build/outputs/apk/ .apk < ProjectName >/app/build/outputs/apk/ .apk / .apk < ProjectName >/app/build/outputs/apk/ .

بعد ذلك، حدد موقع الأداة aapt ، إذا لم يكن بالفعل في باث الخاص بك. إذا كنت تستخدم أدوات سك r8 أو أعلى، فيمكنك العثور على aapt في الدليل < SDK >/build-tools/< tools version number > aapt / < SDK >/build-tools/< tools version number > aapt < SDK >/build-tools/< tools version number > .

ملاحظة: يجب استخدام إصدار aapt الذي تم توفيره لأحدث مكون أدوات البناء المتوفر. إذا لم يكن لديك أحدث مكون من أدوات الإنشاء، فيمكنك تنزيله باستخدام مدير أندرويد سك .


تشغيل aapt باستخدام هذه البنية:

$ aapt dump badging <path_to_exported_.apk>
في ما يلي مثال على إخراج الأمر لمثال بليتوث الثاني، أعلاه:

:
$ ./aapt dump badging BTExample.apkpackage: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'

ميزات المرجع

توفر الأقسام التالية معلومات مرجعية حول ميزات الأجهزة وميزات البرامج ومجموعات الأذونات التي تتضمن متطلبات ميزات محددة.


ميزات الأجهزة

يعرض هذا القسم ميزات الأجهزة التي تدعمها أحدث إصدار منصة. للإشارة إلى أن التطبيق الخاص بك يستخدم أو يتطلب ميزة الأجهزة، تعلن القيمة المقابلة (بدءا من "android.hardware" ) في android:name السمة. في كل مرة تعلن فيها عن ميزة الأجهزة، استخدم عنصر <uses-feature> منفصل.


ميزات الأجهزة الصوتية

android.hardware.audio.low_latency

يستخدم التطبيق خط أنابيب الصوت الكمون المنخفض للجهاز، مما يقلل من التأخير والتأخير عند معالجة إدخال الصوت أو الإخراج.

android.hardware.audio.output

التطبيق ينقل الصوت باستخدام مكبرات الصوت للجهاز، جاك الصوت، قدرات بلوتوث تدفق، أو آلية مماثلة.

android.hardware.audio.pro

يستخدم التطبيق وظائف الصوت الراقية الجهاز وقدرات الأداء.

android.hardware.microphone

يسجل التطبيق الصوت باستخدام ميكروفون الجهاز.

ميزات الأجهزة بلوتوث

android.hardware.bluetooth

يستخدم التطبيق ميزات بلوتوث للجهاز، وعادة للتواصل مع الأجهزة الأخرى التي تدعم بلوتوث.

android.hardware.bluetooth_le

يستخدم التطبيق ميزات بلوتوث بلوتوث منخفضة الطاقة للجهاز.

ميزات أجهزة الكاميرا

android.hardware.camera

يستخدم التطبيق الكاميرا الخلفية التي تواجه الجهاز. الأجهزة مع الكاميرا الأمامية فقط لا تسرد هذه الميزة، وذلك باستخدام ميزة android.hardware.camera.any بدلا من ذلك إذا كان التطبيق الخاص بك يمكن التواصل مع أي كاميرا، بغض النظر عن أي اتجاه تواجه الكاميرا.

android.hardware.camera.any

يستخدم التطبيق واحدة من كاميرات الجهاز، أو الكاميرا الخارجية التي يربط المستخدم إلى الجهاز. استخدام هذه القيمة بدلا من android.hardware.camera إذا كان التطبيق الخاص بك لا يتطلب الكاميرا لتكون واحدة تواجه الظهر.

android.hardware.camera.autofocus

يستخدم التطبيق ميزة ضبط تلقائي للصورة التي تدعمها كاميرا الجهاز.


باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.camera ، ما لم يتم الإعلان عن هذه الميزة الأم مع android:required="false" .


android.hardware.camera.capability.manual_post_processing

يستخدم التطبيق ميزة MANUAL_POST_PROCESSING التي تدعمها كاميرا الجهاز.


هذه الميزة تسمح التطبيق الخاص بك لتجاوز وظيفة توازن اللون الأبيض السيارات الكاميرا. استخدام android.colorCorrection.transform ، android.colorCorrection.gains ، و android.colorCorrection.mode من TRANSFORM_MATRIX .


android.hardware.camera.capability.manual_sensor

يستخدم التطبيق ميزة MANUAL_SENSOR التي تدعمها كاميرا الجهاز.


وتعني هذه الميزة دعم القفل التلقائي للتعرض ( android.control.aeLock )، الذي يسمح بتعرض وقت الكاميرا والحساسية لتبقى ثابتة عند قيم محددة.


android.hardware.camera.capability.raw

يستخدم التطبيق ميزة RAW أن كاميرا الجهاز يدعم.


وتعني هذه الميزة أن الجهاز يمكنه حفظ ملفات دنغ (الخام) وأن كاميرا الجهاز توفر البيانات الوصفية المتعلقة ب دنغ اللازمة لتطبيقك لمعالجة هذه الصور الأولية مباشرة.


android.hardware.camera.external

التطبيق يتصل مع الكاميرا الخارجية التي يربط المستخدم إلى الجهاز. هذه الميزة لا تضمن، مع ذلك، أن الكاميرا الخارجية متاحة لتطبيقك لاستخدامها.

android.hardware.camera.flash

يستخدم التطبيق ميزة فلاش أن كاميرا الجهاز يدعم.


باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.camera ، ما لم يتم الإعلان عن هذه الميزة الأم مع android:required="false" .


android.hardware.camera.front

يستخدم التطبيق الكاميرا الأمامية التي تواجه الجهاز.


باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.camera ، ما لم يتم الإعلان عن هذه الميزة الأم مع android:required="false" .


android.hardware.camera.level.full

يستخدم التطبيق FULL مستوى صورة التقاط الدعم أن واحدة على الأقل من الكاميرات الجهاز يوفر. وتوفر الكاميرات ذات الدعم FULL قدرات التقاط الصور، والتحكم في كل إطار، والتحكم اليدوي في مرحلة ما بعد المعالجة.

ميزات الأجهزة واجهة المستخدم الجهاز

android.hardware.type.automotive

تم تصميم التطبيق لإظهار واجهة المستخدم على مجموعة من الشاشات داخل السيارة. المستخدم يتفاعل مع التطبيق باستخدام أزرار الثابت، لمسة، وحدات تحكم دوارة، والماوس مثل واجهات. تظهر شاشات السيارة عادة في الكونسول المركزي أو مجموعة أجهزة السيارة. وعادة ما تكون هذه الشاشات محدودة الحجم والقرار.


ملاحظة: من المهم أن نضع في اعتبارنا أنه منذ المستخدم يقود أثناء استخدام هذا النوع من واجهة المستخدم التطبيق، يجب التطبيق تقليل الهاء السائق.


android.hardware.type.television

(ديبريكاتد؛ استخدام android.software.leanback بدلا من ذلك.)


تم تصميم التطبيق لإظهار واجهة المستخدم على التلفزيون. وتعرف هذه الميزة "التليفزيون" بأنها تجربة تلفزيون نموذجية في غرفة المعيشة: يتم عرضها على شاشة كبيرة، حيث يجلس المستخدم بعيدا، والشكل السائد من المدخلات هو شيء مثل لوحة د، ولا يستخدم عموما مؤشر الماوس ، أو لمس الجهاز.


android.hardware.type.watch

تم تصميم التطبيق لإظهار واجهة المستخدم على ساعة. يتم ارتداؤها ساعة على الجسم، مثل على المعصم. المستخدم قريب جدا من الجهاز أثناء التفاعل معه.

ميزات جهاز بصمات الأصابع

android.hardware.fingerprint

التطبيق يقرأ بصمات الأصابع باستخدام الأجهزة البيومترية للجهاز.

ميزات الأجهزة غمبد

android.hardware.gamepad

التطبيق يلتقط مدخلات وحدة تحكم اللعبة، إما من الجهاز نفسه أو من غمبد متصلة.

ميزات الأجهزة الأشعة تحت الحمراء

android.hardware.consumerir

يستخدم التطبيق قدرات الأشعة تحت الحمراء للجهاز (الأشعة تحت الحمراء)، وعادة للتواصل مع أجهزة الأشعة تحت الحمراء المستهلك الأخرى.

ميزات أجهزة الموقع

android.hardware.location

يستخدم التطبيق واحد أو أكثر من الميزات على الجهاز لتحديد الموقع، مثل موقع غس، موقع الشبكة، أو موقع الخلية.

android.hardware.location.gps

يستخدم التطبيق إحداثيات الموقع الدقيق التي تم الحصول عليها من نظام تحديد المواقع العالمي (غس) المتلقي على الجهاز.


باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا ميزة android.hardware.location ، إلا إذا تم الإعلان عن هذه الميزة الأم مع السمة android:required="false" .


android.hardware.location.network

يستخدم التطبيق إحداثيات موقع الخشنة التي تم الحصول عليها من نظام تحديد الموقع الجغرافي المستندة إلى الشبكة المدعومة على الجهاز.


باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا ميزة android.hardware.location ، إلا إذا تم الإعلان عن هذه الميزة الأم مع السمة android:required="false" .


ميزات الأجهزة نفك

android.hardware.nfc

يستخدم التطبيق ميزات الجهاز القريب من الميدان الاتصالات (نفك) الراديو.

android.hardware.nfc.hce

(إهمال.)


يستخدم التطبيق مضاهاة بطاقة نفك التي يتم استضافتها على الجهاز.


ميزات برنامج أوبنغل إس

android.hardware.opengles.aep

يستخدم التطبيق أوبنغل إس الروبوت حزمة التمديد التي يتم تثبيتها على الجهاز.

ميزات أجهزة الاستشعار

android.hardware.sensor.accelerometer

يستخدم التطبيق قراءات الحركة من التسارع للجهاز للكشف عن التوجه الحالي للجهاز. على سبيل المثال، يمكن التطبيق استخدام قراءات التسارع لتحديد متى للتبديل بين الاتجاهات العمودي والمناظر الطبيعية.

android.hardware.sensor.ambient_temperature

يستخدم التطبيق جهاز استشعار درجة الحرارة المحيطة (البيئي) الجهاز. على سبيل المثال، يمكن لتطبيق الطقس الإبلاغ عن درجة الحرارة في الأماكن المغلقة أو في الهواء الطلق.

android.hardware.sensor.barometer

يستخدم التطبيق بارومتر الجهاز. على سبيل المثال، يمكن لتطبيق الطقس الإبلاغ عن ضغط الهواء.

android.hardware.sensor.compass

يستخدم التطبيق المغنطيسية للجهاز (البوصلة). على سبيل المثال، يمكن أن يعرض تطبيق التنقل الاتجاه الحالي الذي يواجهه المستخدم.

android.hardware.sensor.gyroscope

يستخدم التطبيق جيروسكوب للجهاز للكشف عن التناوب والتطور، وخلق نظام التوجيه ستة محاور. باستخدام هذا الاستشعار، يمكن التطبيق كشف أكثر سلاسة ما إذا كان يحتاج للتبديل بين الاتجاهات العمودي والمناظر الطبيعية.

android.hardware.sensor.hifi_sensors

يستخدم التطبيق عالية الدقة الإخلاص (مرحبا فاي) أجهزة الاستشعار. على سبيل المثال، يمكن لأحد تطبيقات الألعاب اكتشاف حركات المستخدم عالية الدقة.

android.hardware.sensor.heartrate

يستخدم التطبيق رصد معدل ضربات القلب للجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية الإبلاغ عن الاتجاهات في معدل ضربات القلب للمستخدم بمرور الوقت.

android.hardware.sensor.heartrate.ecg

يستخدم التطبيق إلكارديوغرام جهاز (إسغ) جهاز استشعار معدل ضربات القلب للجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية الإبلاغ عن مزيد من المعلومات التفصيلية حول معدل ضربات القلب للمستخدم.

android.hardware.sensor.light

يستخدم التطبيق جهاز استشعار الضوء للجهاز. على سبيل المثال، يمكن للتطبيق عرض أحد مخططين مختلفين للون استنادا إلى ظروف الإضاءة المحيطة.

android.hardware.sensor.proximity

يستخدم التطبيق جهاز استشعار القرب للجهاز. على سبيل المثال، يمكن التطبيق الهاتفية إيقاف تشغيل شاشة الجهاز عندما يكتشف التطبيق أن المستخدم هو عقد الجهاز على مقربة من الجسم.

android.hardware.sensor.relative_humidity

يستخدم التطبيق جهاز استشعار الرطوبة النسبية للجهاز. على سبيل المثال، يمكن تطبيق الطقس استخدام الرطوبة لحساب والإبلاغ عن نقطة الندى الحالية.

android.hardware.sensor.stepcounter

يستخدم التطبيق عداد خطوة الجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية الإبلاغ عن عدد الخطوات التي يحتاج المستخدم لاتخاذها لتحقيق هدف العد اليومي.

android.hardware.sensor.stepdetector

يستخدم التطبيق للكشف عن خطوة الجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية استخدام الفاصل الزمني بين الخطوات لاستنتاج نوع التمرين الذي يقوم به المستخدم.

ميزات الأجهزة الشاشة

android.hardware.screen.landscape

android.hardware.screen.portrait

التطبيق يتطلب الجهاز لاستخدام صورة أو اتجاه أفقي. إذا كان التطبيق الخاص بك يدعم كلا التوجهات، ثم لا تحتاج إلى إعلان أي ميزة.


على سبيل المثال، إذا كان تطبيقك يتطلب اتجاها عموديا، فيجب أن تعلن عن الميزة التالية بحيث لا يمكن تشغيل الأجهزة التي تدعم الاتجاه الرأسي (دائما أو من خلال اختيار المستخدم)

<uses-feature android:name="android.hardware.screen.portrait" />

ويفترض أن كلا التوجهات غير مطلوبة بشكل افتراضي، لذا قد يتم تثبيت تطبيقك على الأجهزة التي تدعم أحد التوجهات أو كليهما. ومع ذلك، إذا كان أي من الأنشطة الخاصة بك طلب أنها تعمل في اتجاه معين، وذلك باستخدام android:screenOrientation السمة، ثم هذا الإعلان يعني أن التطبيق الخاص بك يتطلب هذا التوجه. على سبيل المثال، إذا كنت تعلن android:screenOrientation مع أي "landscape" ، "reverseLandscape" ، أو "sensorLandscape" ، ثم التطبيق الخاص بك سوف تكون متاحة فقط على الأجهزة التي تدعم اتجاه أفقي.

وكأفضل الممارسات، يجب عليك أن تعلن عن متطلباتك لهذا التوجه باستخدام عنصر <uses-feature> . إذا كنت تعلن عن التوجه إلى النشاط الخاص بك باستخدام android:screenOrientation ، ولكن لا تتطلب فعلا ذلك، يمكنك تعطيل شرط عن طريق إعلان التوجه مع عنصر <uses-feature> android:screenOrientation android:required="false" .

للحصول على التوافق المتخلف، أي جهاز يعمل بنظام التشغيل أندرويد 3.1 (مستوى أبي 12) أو أقل يدعم كلا من المناظر الطبيعية والتوجهات العمودي.

ميزات الأجهزة الهاتفية
android.hardware.telephony
يستخدم التطبيق ميزات الهاتف الهاتف، مثل الاتصالات الهاتفية مع خدمات الاتصالات البيانات.
android.hardware.telephony.cdma
يستخدم التطبيق الشفرة قسم الوصول المتعدد (كدما) نظام الراديو المهاتفة.

باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.telephony ، إلا إذا تم الإعلان عن هذه الميزة الأم مع android:required="false" .

android.hardware.telephony.gsm
يستخدم التطبيق النظام العالمي للاتصالات المتنقلة (غسم) نظام الراديو المهاتفة.

باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.telephony ، إلا إذا تم الإعلان عن هذه الميزة الأم مع android:required="false" .

ميزات الأجهزة التي تعمل باللمس
android.hardware.faketouch
يستخدم التطبيق الأحداث التفاعل اللمس الأساسية، مثل التنصت والسحب.

عند الإعلان حسب الحاجة، تشير هذه الميزة إلى أن التطبيق متوافق مع جهاز فقط إذا كان هذا الجهاز يحاكي شاشة تعمل باللمس ("واجهة اللمس المزيف") أو لديه شاشة تعمل باللمس الفعلية.

يوفر الجهاز الذي يوفر واجهة تعمل باللمس وهمية نظام إدخال المستخدم الذي يحاكي مجموعة فرعية من قدرات الشاشة التي تعمل باللمس. على سبيل المثال، قد يؤدي الماوس أو جهاز التحكم عن بعد إلى توجيه مؤشر على الشاشة. إذا كان التطبيق الخاص بك يتطلب النقطة الأساسية وانقر فوق التفاعل (وبعبارة أخرى، فإنه لن يعمل مع وحدة تحكم د لوحة فقط)، يجب أن تعلن هذه الميزة. لأن هذا هو الحد الأدنى من مستوى التفاعل باللمس، يمكنك أيضا استخدام التطبيق الذي يعلن هذه الميزة على الأجهزة التي توفر واجهات تعمل باللمس أكثر تعقيدا.

ملاحظة: تطبيقات تتطلب ميزة android.hardware.faketouch افتراضيا. إذا كنت تريد أن يقتصر تطبيقك على الأجهزة التي تحتوي على شاشة تعمل باللمس فقط، فيجب عليك أن تعلن صراحة أن شاشة اللمس مطلوبة كما يلي:
<uses-feature android:name="android.hardware.touchscreen"
    android:required="true" />
جميع التطبيقات التي لا تتطلب صراحة android.hardware.touchscreen سوف تعمل أيضا على الأجهزة مع android.hardware.faketouch .

.
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

android.hardware.faketouch.multitouch.distinct
التطبيق يتتبع اثنين أو أكثر من "الأصابع" متميزة على واجهة تعمل باللمس وهمية. هذا هو مجموعة من ميزة android.hardware.faketouch . عند الإعلان عنها حسب الحاجة، تشير هذه الميزة إلى أن التطبيق متوافق مع جهاز فقط إذا كان هذا الجهاز يحاكي تتبع مميز لإصبعين أو أكثر أو لديه شاشة تعمل باللمس الفعلية.

على عكس اللمس المتعدد متميزة التي يحددها android.hardware.touchscreen.multitouch.distinct ، وأجهزة الإدخال التي تدعم اللمس المتعدد متميزة مع واجهة تعمل باللمس وهمية لا تدعم كل الإيماءات اثنين من إصبع لأن المدخلات في تحول إلى حركة المؤشر على الشاشة. وهذا هو، والإيماءات إصبع واحد على مثل هذا الجهاز تحريك المؤشر، الضربات الشديدة بإصبعين تسبب الأحداث التي تعمل باللمس إصبع واحد أن تحدث، والإيماءات الأخرى بإصبعين تؤدي أحداث اتصال اثنين من إصبع المقابلة.

يمكن للجهاز الذي يوفر لوحة اللمس باللمس بإصبعين لحركة المؤشر دعم هذه الميزة.

android.hardware.faketouch.multitouch.jazzhand
التطبيق يتتبع خمسة أو أكثر من "الأصابع" متميزة على واجهة تعمل باللمس وهمية. هذا هو مجموعة من ميزة android.hardware.faketouch . عند الإعلان حسب الحاجة، تشير هذه الميزة إلى أن التطبيق متوافق مع جهاز فقط إذا كان هذا الجهاز يحاكي تتبع متميز من خمسة أصابع أو أكثر أو لديه شاشة تعمل باللمس الفعلية.

على عكس اللمس المتعدد متميزة يحددها android.hardware.touchscreen.multitouch.jazzhand ، أجهزة الإدخال التي تدعم اللمس المتعدد jazzhand مع واجهة اللمس وهمية لا تدعم كل لفتات خمسة أصابع لأن الإدخال في تحويل لحركة المؤشر على الشاشة. وهذا هو، والإيماءات، إصبع واحد على مثل هذا الجهاز تتحرك مؤشر والإيماءات متعددة الأصابع تسبب الأحداث لمس إصبع واحد أن يحدث، وغيرها من الإيماءات متعددة إصبع الزناد أحداث اللمس المتعدد إصبع المقابلة.

وهو الجهاز الذي يوفر لمسة وحة التتبع خمسة أصابع لحركة المؤشر يمكن أن تدعم هذه الميزة.

android.hardware.touchscreen
يستخدم التطبيق قدرات لمس الجهاز لفتات التي هي أكثر تفاعلية من الأحداث مسة الأساسية، مثل قذف. هذا هو مجموعة شاملة منandroid.hardware.faketouch الميزة.

افتراضيا، التطبيق الخاص بك يتطلب هذه الميزة. على هذا النحو، التطبيق غير متوفر على الأجهزة التي لا توفر سوى واجهة تعمل باللمس يحتذى ( "لمسة وهمية") بشكل افتراضي. إذا كنت تريد أن تجعل التطبيق متاح على الأجهزة التي توفر واجهة تعمل باللمس وهمية (أو حتى على الأجهزة التي لا توفر سوى وحدة تحكم د سادة)، يجب أن تقوم بتعريف صراحة على أن الشاشة التي تعمل باللمس غير مطلوب بإعلان android.hardware.touchscreenمع android:required="false". يجب عليك إضافة هذا الإعلان إذا كان التطبيق يستخدم ولكن لا يتطلب-واجهة تعمل باللمس الحقيقية. جميع التطبيقات التي لا تتطلب صراحة android.hardware.touchscreenستعمل أيضا على الأجهزة معandroid.hardware.faketouch .

إذا كان التطبيق في الواقع يتطلب واجهة تعمل باللمس (لتنفيذ فتات اللمس أكثر تقدما مثل قذف)، فإنك لا تحتاج إلى الإعلان عن أي ميزات واجهة تعمل باللمس لأنها مطلوبة بشكل افتراضي. ومع ذلك، فمن الأفضل إذا قمت بتعريف صراحة جميع الميزات التي يستخدمها التطبيق الخاص بك.

إذا كنت تحتاج إلى لمسة التفاعل أكثر تعقيدا، مثل الإيماءات متعددة الأصابع، يجب أن تعلن أن التطبيق يستخدم ميزات شاشة اللمس المتقدمة.

android.hardware.touchscreen.multitouch
يستخدم التطبيق قدرات نقطتين الأساسية للجهاز اللمس المتعدد، مثل فتات قليل، ولكن التطبيق لا يحتاج إلى تتبع اللمسات بشكل مستقل. هذا هو مجموعة شاملة منandroid.hardware.touchscreen الميزة.

باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.hardware.touchscreenميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".

android.hardware.touchscreen.multitouch.distinct
يستخدم التطبيق قدرات اللمس المتعدد متقدمة للجهاز لتتبع نقطتين أو أكثر بشكل مستقل. هذه الميزة هي مجموعة شاملة من android.hardware.touchscreen.multitouchالميزة.

باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.hardware.touchscreen.multitouchميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".

android.hardware.touchscreen.multitouch.jazzhand
يستخدم التطبيق قدرات اللمس المتعدد متقدمة للجهاز لتتبع خمسة أو أكثر من النقاط بشكل مستقل. هذه الميزة هي مجموعة شاملة من android.hardware.touchscreen.multitouchالميزة.

باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.hardware.touchscreen.multitouchميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".

ميزات الأجهزة USB
android.hardware.usb.accessory
سلوك التطبيق كجهاز USB ويتصل المضيفين USB.
android.hardware.usb.host
يستخدم التطبيق الملحقات USB التي ترتبط بالجهاز. يقدم جهاز بوصفها البلد المضيف USB.
ميزات الأجهزة واي فاي
android.hardware.wifi
يستخدم التطبيق 802.11 الشبكات (واي فاي) يتميز على الجهاز.
android.hardware.wifi.direct
يستخدم التطبيق واي فاي ميزات الشبكات المباشرة على الجهاز.
ميزات البرنامج
يعرض هذا القسم ميزات البرنامج بدعم من إطلاق المنصة الأكثر الحالي. للإشارة أن يستخدم التطبيق الخاص بك أو يتطلب ميزة البرنامج، الإعلان عن قيمة المقابلة (بدءا "android.software") في android:nameالسمة. في كل مرة قمت بتعريف ميزة البرنامج، واستخدام منفصلة <uses-feature>عنصر.

ميزات البرنامج الاتصالات
android.software.sip
يستخدم التطبيق بروتوكول بدء الجلسة (SIP) الخدمات. باستخدام SIP، يمكن التطبيق دعم عمليات الهاتفي عبر الإنترنت، مثل مؤتمرات الفيديو والرسائل الفورية.
android.software.sip.voip
يستخدم التطبيق الخدمات القائمة على SIP-الصوت عبر بروتوكول الإنترنت VoIP. باستخدام الصوت عبر بروتوكول الإنترنت، يمكن أن التطبيق يدعم في الوقت الحقيقي عمليات الهاتفي عبر الإنترنت، مثل اتجاهين الفيديو كونفرنس.

باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.software.sipميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".

android.software.webview
يعرض التطبيق على محتوى من الإنترنت.
مخصص ميزات البرنامج المدخلات
android.software.input_methods
يستخدم التطبيق طريقة إدخال الجديد الذي يحدد المطور في InputMethodService.
ميزات البرنامج إدارة الجهاز
android.software.backup
ويشمل التطبيق منطق للتعامل مع النسخ الاحتياطي والاستعادة.
android.software.device_admin
يستخدم التطبيق مدراء الجهاز لتطبيق سياسة الجهاز.
android.software.managed_users
التطبيق يدعم المستخدمين الثانوي وملامح إدارتها.
android.software.securely_removes_users
التطبيق يمكن بشكل دائم إزالة المستخدمين والبيانات المرتبطة بها.
android.software.verified_boot
ويشمل التطبيق منطق للتعامل مع النتائج من ميزة التمهيد التحقق من الجهاز، الذي يكتشف ما إذا كانت التغييرات تكوين الجهاز أثناء عملية إعادة تشغيل.
ميزات البرنامج وسائل الإعلام
android.software.midi
التطبيق يتصل الآلات الموسيقية أو مخرجات الصوت باستخدام آلات موسيقية الواجهة الرقمية (MIDI) البروتوكول.
android.software.print
ويشمل التطبيق أوامر لطباعة الوثائق المعروضة على الجهاز.
android.software.leanback
يقدم التطبيق واجهة المستخدم التي تم تصميمها للعرض على شاشة كبيرة، مثل التلفزيون.
android.software.live_tv
تيارات بث حي للبرامج التلفزيونية.
ميزات البرنامج واجهة الشاشة
android.software.app_widgets
يستخدم التطبيق أو يوفر التطبيق الحاجيات ويجب تثبيت فقط على الأجهزة التي تشتمل على الشاشة الرئيسية أو موقع مماثل حيث يمكن للمستخدمين تضمين التطبيقات الحاجيات.
android.software.home_screen
سلوك التطبيق كبديل لشاشة الجهاز الرئيسية.
android.software.live_wallpaper
يستخدم التطبيق أو يوفر خلفيات التي تشمل الرسوم المتحركة.
الأذونات التي تتضمن متطلبات ميزة
وقدمت بعض الأجهزة وميزة البرنامج الثوابت متاحة للتطبيقات API بعد المقابلة. على سبيل المثال، android.hardware.bluetoothتم إضافة ميزة في الروبوت 2.2 (مستوى API 8)، ولكن API بلوتوث أنه يشير إلى وأضيف في الروبوت 2.0 (مستوى API 5). وبسبب هذا، فإن بعض التطبيقات قادرة على استخدام API قبل كانت لديهم القدرة على أن تعلن أنها تتطلب API باستخدام <uses-feature>النظام.

لمنع هذه التطبيقات من التي يتم توفيرها عن غير قصد، وجوجل اللعب يفترض أن بعض الأذونات المتعلقة الأجهزة تشير إلى أن ميزات الأجهزة الأساسية مطلوبة من قبل الافتراضية. على سبيل المثال، يجب أن التطبيقات التي تستخدم تقنية بلوتوث طلب BLUETOOTHإذن في <uses-permission>عنصر - لالتطبيقات القديمة، وجوجل اللعب يفترض أن الإعلان إذن يعني أن الكامنة android.hardware.bluetoothميزة مطلوب من قبل التطبيق ويضع الترشيح بناء على هذه الميزة. الجدول 2 قوائم الأذونات التي تعني متطلبات ميزة مساوية لتلك التي أعلنت في <uses-feature>العناصر.

لاحظ أن <uses-feature>الإعلانات، بما في ذلك أية أعلن android:requiredسمة، ودائما تأخذ الأسبقية على الميزات التي تنطوي عليها الأذونات في الجدول 2. للحصول على أي من هذه الأذونات، يمكنك تعطيل تصفية على أساس الميزة التي تنطوي عليها معلنا صراحة ميزة ضمنية صراحة، في <uses-feature>العنصر، مع و android:required="false"السمة. على سبيل المثال، لتعطيل أي تصفية على أساس CAMERAإذن، هل إضافة هذا <uses-feature>الإعلان إلى ملف البيان:


<uses-feature android:name="android.hardware.camera" android:required="false" />
تحذير: إذا أهدافك التطبيق الروبوت (مستوى API 21) 5.0 أو أعلى ويستخدم ACCESS_COARSE_LOCATIONأو ACCESS_FINE_LOCATIONإذن من أجل الحصول على تحديثات الموقع من الشبكة أو GPS، على التوالي، يجب عليك أيضا أن يعلن صراحة أن التطبيق يستخدم android.hardware.location.networkأو android.hardware.location.gpsميزات الأجهزة.

الجدول 2. أذونات الأجهزة التي تعني جهاز استخدام الأجهزة.
الفئة هذا إذن ... ... ويعني هذا ميزة المطلوب
بلوتوث BLUETOOTH android.hardware.bluetooth
(انظر التعامل مع الخاص لخاصية البلوتوث للحصول على التفاصيل.)
BLUETOOTH_ADMIN android.hardware.bluetooth
الة تصوير CAMERA android.hardware.camera و 
android.hardware.camera.autofocus
موقعك ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION
android.hardware.location

android.hardware.location.network (فقط عند مستوى API الهدف هو 20 أو أقل).
ACCESS_FINE_LOCATION
android.hardware.location

android.hardware.location.gps (فقط عند مستوى API الهدف هو 20 أو أقل).
ميكروفون RECORD_AUDIO android.hardware.microphone
مهاتفة CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
واي فاي ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi.
CategoryThis Permission......Implies This Feature Requirement
BluetoothBLUETOOTHandroid.hardware.bluetooth(See Special handling for Bluetooth feature for details.)
BLUETOOTH_ADMINandroid.hardware.bluetooth
CameraCAMERAandroid.hardware.camera and
android.hardware.camera.autofocus
LocationACCESS_MOCK_LOCATIONandroid.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDSandroid.hardware.location
INSTALL_LOCATION_PROVIDERandroid.hardware.location
ACCESS_COARSE_LOCATION
android.hardware.location
android.hardware.location.network (Only when target API level is 20 or lower.)
ACCESS_FINE_LOCATION
android.hardware.location
android.hardware.location.gps (Only when target API level is 20 or lower.)
MicrophoneRECORD_AUDIOandroid.hardware.microphone
TelephonyCALL_PHONEandroid.hardware.telephony
CALL_PRIVILEGEDandroid.hardware.telephony
MODIFY_PHONE_STATEandroid.hardware.telephony
PROCESS_OUTGOING_CALLSandroid.hardware.telephony
READ_SMSandroid.hardware.telephony
RECEIVE_SMSandroid.hardware.telephony
RECEIVE_MMSandroid.hardware.telephony
RECEIVE_WAP_PUSHandroid.hardware.telephony
SEND_SMSandroid.hardware.telephony
WRITE_APN_SETTINGSandroid.hardware.telephony
WRITE_SMSandroid.hardware.telephony
Wi-FiACCESS_WIFI_STATEandroid.hardware.wifi
CHANGE_WIFI_STATEandroid.hardware.wifi
CHANGE_WIFI_MULTICAST_STATEandroid.hardware.wifi
*******************************************************



<يستخدم المكتبة> 


غوغل بلاي فيلترينغ

يستخدم غوغل بلاي العناصر <وسيس-ليبراري> المعلنة في بيان التطبيق لتصفية تطبيقك من الأجهزة التي لا تلبي متطلبات المكتبة. لمزيد من المعلومات حول التصفية، راجع موضوع غوغل بلاي فيلترس .
بناء الجملة:

<uses-library
  android:name="string"
  android:required=["true" | "false"] />


الواردة في:
<application>
وصف:
لتحديد مكتبة مشتركة يجب ربط التطبيق بها. يخبر هذا العنصر النظام بتضمين التعليمات البرمجية للمكتبة في محمل الفئة للحزمة.
جميع حزم android (مثل android.app ، android.content ، android.view ، و android.widget ) هي في المكتبة الافتراضية أن جميع التطبيقات ترتبط تلقائيا ضد. ومع ذلك، توجد بعض الحزم (مثل maps ) في مكتبات منفصلة لا يتم ربطها تلقائيا. راجع وثائق الحزم التي تستخدمها لتحديد المكتبة التي تحتوي على رمز الحزمة.

يؤثر هذا العنصر أيضا على تثبيت التطبيق على جهاز معين وتوافر التطبيق على غوغل بلاي:

التركيب
إذا كان هذا العنصر موجود android:required يتم تعيين السمة android:required إلى true ، فإن الإطار PackageManager لن تسمح للمستخدم تثبيت التطبيق إلا إذا كانت المكتبة موجودة على جهاز المستخدم.
ويرد وصف android:required السمة android:required بالتفصيل في القسم التالي.

الصفات:
android:name
اسم المكتبة. يتم توفير الاسم من خلال وثائق الحزمة التي تستخدمها. مثال على ذلك هو " android.test.runner "، وهي حزمة تحتوي على دروس اختبار الروبوت.
android:required
قيمة منطقية تشير إلى ما إذا كان التطبيق يتطلب مكتبة المحدد بواسطة android:name :
"true" : لا يعمل التطبيق دون هذه المكتبة. لن يسمح النظام بالتطبيق على جهاز لا يحتوي على المكتبة.
"false" : التطبيق يمكن استخدام المكتبة إذا كان موجودا، ولكن تم تصميمه للعمل دون ذلك إذا لزم الأمر. سيسمح النظام بتثبيت التطبيق، حتى لو لم تكن المكتبة موجودة. إذا كنت تستخدم "false" ، فأنت مسؤول عن التحقق من وقت تشغيل المكتبة.
للتحقق من وجود مكتبة، يمكنك استخدام التفكير لتحديد ما إذا كانت فئة معينة متاحة.
الافتراضي هو "true" .

مقدمة في: أبي ليفيل 7.

قدم في:
أبي ليفيل 1
أنظر أيضا:
PackageManager

**-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*


<الاستخدامات إذن>

غوغل بلاي فيلترينغ

في بعض الحالات، يمكن أن تؤثر الأذونات التي تطلبها من خلال <uses-permission> كيفية تصفية تطبيقك بواسطة غوغل بلاي.

إذا كنت تطلب إذن الأجهزة ذات الصلة - CAMERA ، على سبيل المثال - جوجل اللعب يفترض أن التطبيق الخاص بك يتطلب ميزة الأجهزة الأساسية وفلاتر التطبيق من الأجهزة التي لا تقدم ذلك.

للتحكم في التصفية، عليك دائما الإعلان صراحة عن ميزات الأجهزة في عناصر <uses-feature> بدلا من الاعتماد على غوغل بلاي من أجل "اكتشاف" المتطلبات في عناصر <uses-permission> . ثم، إذا كنت تريد تعطيل التصفية لميزة معينة، يمكنك إضافة سمة android:required="false" إلى إعلان <uses-feature> .

للحصول على قائمة الأذونات التي تتضمن ميزات الأجهزة، اطلع على وثائق العنصر <uses-feature> .
بناء الجملة:

<uses-permission android:name="string"
        android:maxSdkVersion="integer" />


  
الواردة في:
<manifest>
وصف:
يطلب الحصول على إذن بأنه يجب منح الطلب لكي يعمل بشكل صحيح. يتم منح الأذونات من قبل المستخدم عند تثبيت التطبيق (على الأجهزة التي تعمل بنظام التشغيل أندرويد 5.1 وأقل) أو أثناء تشغيل التطبيق (على الأجهزة التي تعمل بنظام التشغيل أندرويد 6.0 والإصدارات الأحدث).
لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة ودليل أبي أذونات النظام المنفصل. قائمة الأذونات التي تم تعريفها من قبل منصة قاعدة يمكن العثور عليها في android.Manifest.permission .

الصفات:
android:name
اسم الإذن. يمكن أن يكون الإذن المحدد من قبل التطبيق مع <permission> عنصر، إذن محدد من قبل تطبيق آخر، أو واحد من أذونات النظام القياسية (مثل "android.permission.CAMERA" أو "android.permission.READ_CONTACTS" ). كما تظهر هذه الأمثلة، اسم إذن عادة ما يتضمن اسم الحزمة كبادئة.
android:maxSdkVersion
أعلى مستوى أبي الذي ينبغي أن يمنح هذا الإذن لتطبيقك. يعد تعيين هذه السمة مفيدا إذا لم يعد هناك حاجة إلى إذن التطبيق الذي تطلبه بدءا من مستوى معين من واجهة برمجة التطبيقات.
على سبيل المثال، بدءا من أندرويد 4.4 (مستوى واجهة برمجة التطبيقات 19)، لم يعد من الضروري أن يطلب WRITE_EXTERNAL_STORAGE إذن WRITE_EXTERNAL_STORAGE عندما يريد تطبيقك الكتابة إلى الأدلة الخاصة بالتطبيقات الخاصة به على وحدة التخزين الخارجية (الأدلة المقدمة من getExternalFilesDir() ) . ومع ذلك، مطلوب إذن لمستوى أبي 18 وأقل. لذلك يمكنك أن تعلن أن هناك حاجة إلى هذا الإذن فقط حتى مستوى أبي 18 مع إعلان مثل هذا:
<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />
وبهذه الطريقة، بدءا من مستوى أبي 19، فإن النظام لم يعد منح التطبيق الخاص بك إذن WRITE_EXTERNAL_STORAGE .

تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) رقم 19.

قدم في:
أبي ليفيل 1
أنظر أيضا:
<permission>
<uses-permission-sdk-23>
<uses-feature>


**-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*



<الاستخدامات إذن-SDK-23>
بناء الجملة:

<uses-permission-sdk-23>

SYNTAX:
<uses-permission-sdk-23 android:name="string"
        android:maxSdkVersion="integer" />

الواردة في:
<manifest>
وصف:
لتحديد أن أحد التطبيقات يريد الحصول على إذن معين، ولكن فقط إذا كان التطبيق قيد التشغيل على جهاز بمستوى واجهة برمجة التطبيقات 23 أو أعلى. إذا كان الجهاز يشغل مستوى أبي 22 أو أقل، فإن التطبيق ليس لديه الإذن المحدد.
يكون هذا العنصر مفيدا عند تحديث أحد التطبيقات لتضمين ميزة جديدة تتطلب إذنا إضافيا. إذا قام مستخدم بتحديث أحد التطبيقات على جهاز يقوم بتشغيل مستوى أبي 22 أو أقل، يطالب النظام المستخدم في وقت التثبيت بمنح كافة الأذونات الجديدة التي تم الإعلان عنها في هذا التحديث. إذا كانت ميزة جديدة صغيرة بما فيه الكفاية، قد تفضل تعطيل الميزة تماما على تلك الأجهزة، لذلك لا يحتاج المستخدم لمنح أذونات إضافية لتحديث التطبيق. باستخدام عنصر <uses-permission> <uses-permission-sdk-23> بدلا من <uses-permission> ، يمكنك طلب الإذن فقط إذا كان التطبيق قيد التشغيل على الأنظمة الأساسية التي تدعم نموذج أذونات التشغيل ، والذي يمنح المستخدم الأذونات للتطبيق بينما هو قيد التشغيل.

لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة ودليل أبي أذونات النظام المنفصل. قائمة الأذونات المحددة من قبل منصة الأساسي هو متاح في android.Manifest.permission .

الصفات:
android:name
اسم الإذن. يمكن تعريف هذا الإذن من قبل التطبيق مع عنصر <permission> ، يمكن أن يكون إذن يحدده التطبيق آخر، أو يمكن أن يكون واحدا من أذونات النظام القياسية، مثل "android.permission.CAMERA" أو "android.permission.READ_CONTACTS" .
android:maxSdkVersion
أعلى مستوى أبي الذي ينبغي أن يمنح هذا الإذن لتطبيقك. إذا تم تثبيت التطبيق على جهاز مع مستوى أبي في وقت لاحق، لا يتم منح التطبيق الإذن ولا يمكن استخدام أي وظيفة ذات الصلة.
قدم في:
مستوى واجهة برمجة التطبيقات 23
أنظر أيضا:
<permission>
<uses-permission>
<uses-feature>

*-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*

<يستخدم-الإستراحة>
في هذه الوثيقة
ما هو مستوى واجهة برمجة التطبيقات؟
استخدامات مستوى أبي في الروبوت
اعتبارات التنمية
التطبيق إلى الأمام التوافق
تطبيق التوافق الخلفي
تحديد إصدار المنصة ومستوى واجهة برمجة التطبيقات
إعلان الحد الأدنى لمستوى واجهة برمجة التطبيقات
اختبار ضد مستويات أبي أعلى
تصفية الوثائق المرجعية حسب مستوى واجهة برمجة التطبيقات

غوغل بلاي فيلترينغ

يستخدم غوغل بلاي السمات <uses-sdk> المعلنة في بيان التطبيق لتصفية تطبيقك من الأجهزة التي لا تلبي متطلبات إصدار النظام الأساسي. قبل تعيين هذه السمات، تأكد من استيعاب فلاتر غوغل بلاي .

بناء الجملة:


<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />

الواردة في:
<manifest>
وصف:
يتيح لك التعبير عن توافق التطبيق مع واحد أو أكثر من الإصدارات من منصة أندرويد، عن طريق عدد صحيح أبي المستوى. سيتم مقارنة مستوى أبي التي أعرب عنها تطبيق لمستوى أبي من نظام أندرويد معين، والتي قد تختلف بين أجهزة الروبوت المختلفة.

على الرغم من اسمه، يتم استخدام هذا العنصر لتحديد مستوى أبي، وليس رقم إصدار سك (مجموعة تطوير البرامج) أو منصة أندرويد. مستوى أبي هو دائما عدد صحيح واحد. لا يمكنك استخلاص مستوى أبي من رقم إصدار أندرويد المرتبط به (على سبيل المثال، فإنه ليس هو نفسه الإصدار الرئيسي أو مجموع الإصدارات الرئيسية والثانوية).

اقرأ أيضا الوثيقة حول إصدار تطبيقاتك .

الصفات:
android:minSdkVersion
عدد صحيح تعيين الحد الأدنى لمستوى أبي المطلوب لتشغيل التطبيق. سيقوم نظام أندرويد بمنع المستخدم من تثبيت التطبيق إذا كان مستوى أبي للنظام أقل من القيمة المحددة في هذه السمة. يجب دائما أن تعلن هذه السمة.
تحذير: إذا لم تقم بإعلان هذه الخاصية المميزة، يفترض النظام قيمة افتراضية "1"، مما يشير إلى أن التطبيق متوافق مع جميع إصدارات أندرويد. إذا كان تطبيقك غير متوافق مع جميع الإصدارات (على سبيل المثال، فإنه يستخدم واجهات برمجة التطبيقات التي تم إدخالها في أبي ليفيل 3) ولم يتم الإعلان عن minSdkVersion المناسب، ثم عند تثبيته على نظام بمستوى أبي أقل من 3، minSdkVersion التطبيق أثناء وقت التشغيل عند محاولة الوصول إلى واجهات برمجة التطبيقات غير المتوفرة. لهذا السبب، تأكد من الإعلان عن مستوى أبي المناسب في السمة minSdkVersion .

android:targetSdkVersion
عدد صحيح تعيين مستوى أبي أن يستهدف التطبيق. إذا لم يتم تعيين القيمة الافتراضية تساوي التي تعطى إلى minSdkVersion .
هذه السمة بإعلام النظام الذي كنت قد اختبرت ضد النسخة المستهدفة ويجب أن النظام لا تمكين أي سلوك التوافق للحفاظ على التطبيق الخاص بك إلى الأمام التوافق مع الإصدار الهدف. التطبيق لا يزال قادرا على تشغيل على الإصدارات القديمة (وصولا إلى minSdkVersion ).

كما يتطور الروبوت مع كل إصدار جديد، قد تتغير بعض السلوكيات وحتى المظاهر. ومع ذلك، إذا كان مستوى واجهة برمجة التطبيقات للمنصة أعلى من الإصدار المعلن عن طريق targetSdkVersion في تطبيقك، فقد يعمل النظام على تمكين سلوكيات التوافق لضمان استمرار تطبيقك للعمل بالطريقة التي تتوقعها. يمكنك تعطيل سلوكيات التوافق هذه من خلال تحديد targetSdkVersion لتطابق مستوى واجهة برمجة التطبيقات للمنصة التي يتم تشغيلها. على سبيل المثال، يسمح تعيين هذه القيمة إلى "11" أو أعلى للنظام بتطبيق سمة افتراضية جديدة (هولو) على تطبيقك عند التشغيل على نظام التشغيل أندرويد 3.0 أو أحدث كما يعمل على تعطيل وضع توافق الشاشة عند التشغيل على شاشات أكبر (لأن دعم واجهة برمجة التطبيقات مستوى 11 يدعم ضمنا شاشات أكبر).

هناك العديد من سلوكيات التوافق التي يمكن للنظام تمكينها استنادا إلى القيمة التي قمت بتعيينها لهذه السمة. يتم وصف العديد من هذه السلوكيات بواسطة إصدارات المنصة المقابلة في مرجع Build.VERSION_CODES .

للحفاظ على التطبيق الخاص بك جنبا إلى جنب مع كل إصدار أندرويد، يجب زيادة قيمة هذه السمة لتتناسب مع أحدث مستوى أبي، ثم اختبار التطبيق الخاص بك بدقة على إصدار المنصة المقابلة.

قدم في: أبي المستوى 4

android:maxSdkVersion
عدد صحيح تعيين الحد الأقصى لمستوى أبي الذي تم تصميم التطبيق لتشغيل.
في نظام التشغيل أندرويد 1.5 و 1.6 و 2.0 و 2.0.1، يتحقق النظام من قيمة هذه السمة عند تثبيت تطبيق وعند إعادة التحقق من صحة التطبيق بعد تحديث النظام. في كلتا الحالتين، إذا كانت السمة maxSdkVersion للتطبيق أقل من مستوى أبي المستخدم من قبل النظام نفسه، فلن يسمح النظام بتثبيت التطبيق. في حالة إعادة التحقق من صحة بعد تحديث النظام، وهذا يزيل بشكل فعال التطبيق الخاص بك من الجهاز.

لتوضيح كيفية تأثير هذه السمة على تطبيقك بعد تحديثات النظام، ضع في اعتبارك المثال التالي:

يتم نشر تطبيق يعلن maxSdkVersion="5" في بيانه على غوغل بلاي. يقوم المستخدم الذي يقوم جهازه بتشغيل أندرويد 1.6 (أبي ليفيل 4) بتنزيل التطبيق وتثبيته. بعد بضعة أسابيع، يتلقى المستخدم تحديث نظام الإفراط في الهواء لالروبوت 2.0 (أبي مستوى 5). بعد تثبيت التحديث، يقوم النظام بالتحقق من maxSdkVersion للتطبيق بنجاح وإعادة التحقق من صحة ذلك. وظائف التطبيق كالمعتاد. ومع ذلك، في وقت لاحق، يتلقى الجهاز آخر تحديث النظام، وهذه المرة لالروبوت 2.0.1 (أبي مستوى 6). بعد التحديث، يمكن للنظام لم يعد إعادة التحقق من صحة التطبيق لأن مستوى أبي الخاص للنظام (6) هو الآن أعلى من الحد الأقصى المدعوم من قبل التطبيق (5). النظام يمنع التطبيق من أن تكون مرئية للمستخدم، في الواقع إزالته من الجهاز.

تحذير: لا ينصح بإعلان هذه السمة. أولا، ليست هناك حاجة إلى تعيين السمة كوسيلة لحظر نشر التطبيق الخاص بك على إصدارات جديدة من منصة أندرويد كما يتم الافراج عنهم. وبحلول التصميم، تكون الإصدارات الجديدة من المنصة متوافقة تماما مع الخلف. يجب أن يعمل طلبك بشكل صحيح على الإصدارات الجديدة، شريطة أن يستخدم واجهات برمجة التطبيقات القياسية فقط ويتبع أفضل ممارسات التطوير. ثانيا، لاحظ أنه في بعض الحالات، قد يؤدي إعلان السمة إلى إزالة طلبك من أجهزة المستخدمين بعد تحديث النظام إلى مستوى أبي أعلى. معظم الأجهزة التي من المرجح أن يتم تثبيت التطبيق الخاص بك سوف تتلقى تحديثات النظام الدورية عبر الهواء، لذلك يجب أن تنظر في تأثيرها على التطبيق الخاص بك قبل تعيين هذه السمة.

قدم في: أبي المستوى 4

الإصدارات المستقبلية من الروبوت (وراء الروبوت 2.0.1) لن تحقق أو فرض السمة maxSdkVersion أثناء التثبيت أو إعادة التحقق. سيواصل غوغل بلاي استخدام السمة كفلتر، مع ذلك، عند تقديم المستخدمين الذين لديهم تطبيقات متاحة للتنزيل.
قدم في:
أبي ليفيل 1
ما هو مستوى واجهة برمجة التطبيقات؟
أبي ليفيل هو قيمة عدد صحيح يحدد بشكل فريد مراجعة أبي الإطار التي يقدمها إصدار من منصة أندرويد.

يوفر منصة أندرويد أبي الإطار التي يمكن للتطبيقات استخدامها للتفاعل مع نظام أندرويد الأساسي. يتكون إطار عمل برمجة التطبيقات من:

مجموعة أساسية من الحزم والصفوف
مجموعة من عناصر وخصائص شمل لإعلان ملف بيان
مجموعة من عناصر وسمات شمل لإعلان الموارد والوصول إليها
مجموعة من النوايا
مجموعة من الأذونات التي يمكن للتطبيقات طلبها، فضلا عن تنفيذ الأذونات المضمنة في النظام
يمكن أن تتضمن كل نسخة متعاقبة من منصة أندرويد التحديثات إلى واجهة برمجة تطبيقات إطار تطبيق أندرويد التي توفرها.

تم تصميم التحديثات إلى واجهة برمجة تطبيقات الإطار بحيث تظل واجهة برمجة التطبيقات الجديدة متوافقة مع الإصدارات السابقة من واجهة برمجة التطبيقات. وهذا هو، فإن معظم التغييرات في أبي هي إضافة وإدخال وظيفة جديدة أو استبدال. أثناء ترقية أجزاء من واجهة برمجة التطبيقات، يتم إيقاف الأجزاء القديمة التي تم استبدالها ولكن لا تتم إزالتها، حتى تتمكن التطبيقات الحالية من استخدامها. في عدد قليل جدا من الحالات، قد يتم تعديل أجزاء من واجهة برمجة التطبيقات أو إزالتها، على الرغم من أن هذه التغييرات عادة ما تكون مطلوبة فقط لضمان متانة واجهة برمجة التطبيقات وتطبيقها أو أمن النظام. يتم نقل جميع أجزاء أبي الأخرى من المراجعات السابقة بدون تعديل.

يتم تحديد أبي الإطار الذي يسلم منصة أندرويد باستخدام معرف صحيح يسمى "مستوى أبي". كل إصدار منصة أندرويد يدعم بالضبط مستوى أبي واحد، على الرغم من أن الدعم هو ضمني لجميع مستويات أبي السابقة (وصولا الى أبي المستوى 1). الإصدار الأولي من منصة أندرويد المقدمة أبي المستوى 1 والإصدارات اللاحقة قد زادت مستوى أبي.

ويحدد الجدول أدناه مستوى أبي المدعوم من كل إصدار من نظام التشغيل أندرويد. للحصول على معلومات حول الأرقام النسبية للأجهزة التي تقوم بتشغيل كل إصدار، راجع صفحة لوحات تحكم إصدارات المنصة .

Platform VersionAPI LevelVERSION_CODENotes
Android O26OPlatform Highlights
Android 7.1.1
Android 7.1
25N_MR1Platform Highlights
Android 7.024NPlatform Highlights
Android 6.023MPlatform Highlights
Android 5.122LOLLIPOP_MR1Platform Highlights
Android 5.021LOLLIPOP
Android 4.4W20KITKAT_WATCHKitKat for Wearables Only
Android 4.419KITKATPlatform Highlights
Android 4.318JELLY_BEAN_MR2Platform Highlights
Android 4.2, 4.2.217JELLY_BEAN_MR1Platform Highlights
Android 4.1, 4.1.116JELLY_BEANPlatform Highlights
Android 4.0.3, 4.0.415ICE_CREAM_SANDWICH_MR1Platform Highlights
Android 4.0, 4.0.1, 4.0.214ICE_CREAM_SANDWICH
Android 3.213HONEYCOMB_MR2
Android 3.1.x12HONEYCOMB_MR1Platform Highlights
Android 3.0.x11HONEYCOMBPlatform Highlights
Android 2.3.4
Android 2.3.3
10GINGERBREAD_MR1Platform Highlights
Android 2.3.2
Android 2.3.1
Android 2.3
9GINGERBREAD
Android 2.2.x8FROYOPlatform Highlights
Android 2.1.x7ECLAIR_MR1Platform Highlights
Android 2.0.16ECLAIR_0_1
Android 2.05ECLAIR
Android 1.64DONUTPlatform Highlights
Android 1.53CUPCAKEPlatform Highlights
Android 1.12BASE_1_1
Android 1.01BASE

Uses of API Level in Android


إصدار المنصة مستوى واجهة برمجة التطبيقات VERSION_CODE ملاحظات
الروبوت O 26 O أبرز المنبر
الروبوت 7.1.1 
الروبوت 7.1 25 N_MR1 أبرز المنبر
الروبوت 7.0 24 N أبرز المنبر
الروبوت 6.0 23 M أبرز المنبر
الروبوت 5.1 22 LOLLIPOP_MR1 أبرز المنبر
أندرويد 5.0 21 LOLLIPOP
الروبوت 4.4W 20 KITKAT_WATCH كيت كات للارتداء فقط
أندرويد 4.4 19 KITKAT أبرز المنبر
أندرويد 4.3 18 JELLY_BEAN_MR2 أبرز المنبر
أندرويد 4.2، 4.2.2 17 JELLY_BEAN_MR1 أبرز المنبر
أندرويد 4.1، 4.1.1 16 JELLY_BEAN أبرز المنبر
أندرويد 4.0.3، 4.0.4 15 ICE_CREAM_SANDWICH_MR1 أبرز المنبر
أندرويد 4.0، 4.0.1، 4.0.2 14 ICE_CREAM_SANDWICH
الروبوت 3.2 13 HONEYCOMB_MR2
أندرويد 3.1.x 12 HONEYCOMB_MR1 أبرز المنبر
أندرويد 3.0.x 11 HONEYCOMB أبرز المنبر
أندرويد 2.3.4 
الروبوت 2.3.3 10 GINGERBREAD_MR1 أبرز المنبر
أندرويد 2.3.2 
الروبوت 2.3.1 
أندرويد 2.3 9 GINGERBREAD
الإصدار 2.2.x من أندرويد 8 FROYO أبرز المنبر
أندرويد 2.1.x 7 ECLAIR_MR1 أبرز المنبر
الروبوت 2.0.1 6 ECLAIR_0_1
الروبوت 2.0 5 ECLAIR
الروبوت 1.6 4 DONUT أبرز المنبر
الروبوت 1.5 3 CUPCAKE أبرز المنبر
الروبوت 1.1 2 BASE_1_1
الروبوت 1.0 1 BASE
استخدامات مستوى أبي في الروبوت
يخدم معرف مستوى واجهة برمجة التطبيقات (أبي) دورا رئيسيا في ضمان أفضل تجربة ممكنة للمستخدمين ومطوري التطبيقات:

فإنه يتيح منصة أندرويد وصف الحد الأقصى إطار أبي المراجعة التي يدعمها
وهو يتيح للتطبيقات وصف مراجعة أبي الإطار التي تتطلبها
وهو يتيح للنظام التفاوض بشأن تثبيت التطبيقات على جهاز المستخدم، بحيث لا يتم تثبيت التطبيقات غير متوافقة مع الإصدار.
كل إصدار منصة أندرويد يخزن معرف أبي مستوى داخليا، في نظام أندرويد نفسه.

يمكن للتطبيقات استخدام عنصر البيان الذي توفره أبي الإطار - <uses-sdk> - لوصف الحد الأدنى والحد الأقصى لمستويات أبي التي تكون قادرة على تشغيلها، فضلا عن مستوى أبي المفضل التي تم تصميمها لدعم. يقدم العنصر ثلاث سمات رئيسية:

android:minSdkVersion - يحدد الحد الأدنى لمستوى أبي الذي يكون التطبيق قادرا على تشغيله. القيمة الافتراضية هي "1".
android:targetSdkVersion - يحدد مستوى أبي الذي تم تصميم التطبيق لتشغيله. في بعض الحالات، يسمح هذا للتطبيق باستخدام عناصر البيان أو السلوكيات المحددة في مستوى أبي المستهدف، بدلا من أن يقتصر على استخدام تلك المحددة فقط لمستوى أبي الأدنى.
android:maxSdkVersion - يحدد الحد الأقصى لمستوى أبي الذي يكون التطبيق قادرا على تشغيله. هام: يرجى قراءة الوثائق <uses-sdk> قبل استخدام هذه السمة.
على سبيل المثال، لتحديد الحد الأدنى لمستوى أبي للنظام الذي يتطلبه التطبيق من أجل التشغيل، سيتضمن التطبيق في البيان الخاص به عنصر <uses-sdk> android:minSdkVersion <uses-sdk> مع سمة android:minSdkVersion . قيمة android:minSdkVersion سيكون عدد صحيح المقابلة لمستوى أبي من أقرب نسخة من منصة أندرويد التي بموجبها يمكن تشغيل التطبيق.

عندما يحاول المستخدم تثبيت تطبيق، أو عند إعادة التحقق من تطبيق بعد تحديث النظام، يقوم نظام أندرويد أولا بالتحقق من السمات <uses-sdk> في بيان التطبيق ويقارن القيم مع مستوى أبي الداخلي. يسمح النظام لبدء التثبيت فقط إذا تم استيفاء هذه الشروط:

إذا تم android:minSdkVersion سمة android:minSdkVersion ، يجب أن تكون قيمته أقل من أو تساوي العدد الصحيح لمستوى أبي للنظام. إذا لم يتم الإعلان عنها، يفترض النظام أن التطبيق يتطلب أبي المستوى 1.
إذا تم تعريف سمة android:maxSdkVersion يجب أن تكون قيمته مساوية أو أكبر من عدد صحيح أبي مستوى النظام. إذا لم يتم الإعلان عنها، يفترض النظام أن التطبيق لا يوجد لديه الحد الأقصى لمستوى أبي. يرجى قراءة الوثائق <uses-sdk> لمزيد من المعلومات حول كيفية تعامل النظام مع هذه السمة.
عند الإعلان في بيان التطبيق، قد يظهر عنصر <uses-sdk> :

<manifest>
  <uses-sdk android:minSdkVersion="5" />
  ...</manifest>
السبب الرئيسي أن أحد التطبيقات سوف يعلن مستوى أبي في android:minSdkVersion هو أن أقول لنظام أندرويد أنه يستخدم واجهات برمجة التطبيقات التي تم تقديمها في مستوى أبي المحدد. إذا كان التطبيق مثبتا بطريقة ما على منصة ذات مستوى أبي أقل، فسيتعطل عند وقت التشغيل عندما يحاول الوصول إلى واجهات برمجة التطبيقات غير الموجودة. يمنع النظام مثل هذه النتيجة من خلال عدم السماح بتثبيت التطبيق إذا كان أدنى مستوى أبي يتطلبه أعلى من إصدار النظام الأساسي على الجهاز المستهدف.

على سبيل المثال، تم تقديم حزمة android.appwidget مع أبي ليفيل 3. إذا كان أحد التطبيقات يستخدم أبي، يجب أن تعلن سمة android:minSdkVersion بقيمة "3". ثم سيتم تثبيت التطبيق على منصات مثل الروبوت 1.5 (أبي المستوى 3) والروبوت 1.6 (أبي المستوى 4)، ولكن ليس على الروبوت 1.1 (أبي المستوى 2) ومنصات أندرويد 1.0 (أبي المستوى 1).

لمزيد من المعلومات حول كيفية تحديد متطلبات مستوى واجهة برمجة تطبيقات التطبيق، راجع قسم <uses-sdk> من وثائق ملف البيان.

اعتبارات التنمية
توفر الأقسام أدناه معلومات ذات صلة بمستوى واجهة برمجة التطبيقات (أبي) يجب مراعاتها عند تطوير تطبيقك.

التطبيق إلى الأمام التوافق
تطبيقات الروبوت عموما إلى الأمام متوافقة مع الإصدارات الجديدة من منصة أندرويد.

لأن كل التغييرات تقريبا على أبي الإطار هي المضافة، وتطبيق الروبوت المتقدمة باستخدام أي إصدار معين من أبي (كما هو محدد من قبل مستوى أبي لها) متوافق مع الإصدارات اللاحقة من منصة أندرويد ومستويات أبي أعلى. يجب أن يكون التطبيق قادرا على تشغيل على جميع الإصدارات الأحدث من منصة أندرويد، إلا في حالات معزولة حيث يستخدم التطبيق جزءا من أبي التي تتم إزالتها في وقت لاحق لسبب ما.

التوافق إلى الأمام مهم لأن العديد من الأجهزة التي تعمل بنظام التشغيل أندرويد تلقي الإفراط في الهواء (أوتا) تحديثات النظام. يمكن للمستخدم تثبيت التطبيق الخاص بك واستخدامها بنجاح، ثم في وقت لاحق الحصول على تحديث أوتا إلى إصدار جديد من منصة أندرويد. بمجرد تثبيت التحديث، سيتم تشغيل التطبيق في إصدار وقت التشغيل الجديد للبيئة، ولكن واحد لديه قدرات أبي والنظام التي يعتمد عليها التطبيق الخاص بك.

في بعض الحالات، قد تؤثر التغييرات التي تقع أسفل واجهة برمجة التطبيقات، مثل تلك الموجودة في النظام الأساسي نفسه، على تطبيقك عند تشغيله في البيئة الجديدة. لهذا السبب من المهم بالنسبة لك، كمطور التطبيق، لفهم كيف التطبيق سوف تبدو وتتصرف في كل بيئة النظام. لمساعدتك في اختبار تطبيقك على إصدارات مختلفة من نظام التشغيل أندرويد، يتضمن نظام التشغيل أندرويد سك العديد من الأنظمة الأساسية التي يمكنك تنزيلها. كل منصة تتضمن صورة نظام متوافقة يمكنك تشغيلها في أفد، لاختبار التطبيق الخاص بك.

تطبيق التوافق الخلفي
تطبيقات الروبوت ليست بالضرورة متخلفة متوافقة مع الإصدارات من منصة أندرويد أقدم من الإصدار الذي تم تجميعها.

يمكن أن يشتمل كل إصدار جديد من نظام التشغيل أندرويد على واجهات برمجة تطبيقات إطارية جديدة، مثل تلك التي تمنح التطبيقات إمكانية الدخول إلى إمكانات جديدة في النظام الأساسي أو تستبدل أجزاء أبي الحالية. يمكن الوصول إلى واجهات برمجة التطبيقات الجديدة للتطبيقات عند التشغيل على النظام الأساسي الجديد، وكما ذكر أعلاه، عند تشغيل الإصدارات الأحدث من النظام الأساسي، كما هو محدد بواسطة مستوى واجهة برمجة التطبيقات. وعلى العكس من ذلك، نظرا لأن الإصدارات السابقة من النظام الأساسي لا تتضمن واجهات برمجة التطبيقات الجديدة، يتعذر تشغيل التطبيقات التي تستخدم واجهات برمجة التطبيقات الجديدة على تلك الأنظمة الأساسية.

على الرغم من أنه من غير المحتمل أن يتم تشغيل جهاز يعمل بنظام التشغيل أندرويد إلى إصدار سابق من النظام الأساسي، فمن المهم أن ندرك أنه من المرجح أن يكون هناك العديد من الأجهزة في هذا المجال التي تعمل على تشغيل الإصدارات السابقة من النظام الأساسي. حتى بين الأجهزة التي تتلقى تحديثات أوتا، قد يتأخر بعض وربما لا تتلقى تحديثا لفترة كبيرة من الزمن.

تحديد إصدار المنصة ومستوى واجهة برمجة التطبيقات
عندما كنت تقوم بتطوير التطبيق الخاص بك، سوف تحتاج إلى اختيار إصدار منصة التي سوف تجميع التطبيق. بشكل عام، يجب تجميع التطبيق الخاص بك ضد أدنى نسخة ممكنة من النظام الأساسي أن التطبيق الخاص بك يمكن أن تدعم.

يمكنك تحديد أدنى إصدار ممكن من منصة عن طريق تجميع التطبيق ضد أهداف بناء أقل تباعا. بعد تحديد الإصدار الأدنى، يجب إنشاء أفد باستخدام إصدار المنصة المطابق (ومستوى أبي) واختبار التطبيق بالكامل. تأكد من الإعلان عن سمة android:minSdkVersion في بيان التطبيق وتعيين قيمته إلى مستوى واجهة برمجة التطبيقات لإصدار النظام الأساسي.

إعلان الحد الأدنى لمستوى واجهة برمجة التطبيقات
إذا قمت بإنشاء تطبيق يستخدم واجهات برمجة التطبيقات أو ميزات النظام التي تم إدخالها في أحدث إصدار للنظام الأساسي، فيجب تعيين السمة android:minSdkVersion إلى مستوى واجهة برمجة التطبيقات لأحدث إصدار للنظام الأساسي. وهذا يضمن أن المستخدمين سوف تكون قادرة فقط على تثبيت التطبيق الخاص بك إذا كانت أجهزتهم تعمل على إصدار متوافق من منصة أندرويد. بدوره، وهذا يضمن أن التطبيق الخاص بك يمكن أن تعمل بشكل صحيح على أجهزتهم.

إذا كان التطبيق الخاص بك يستخدم واجهات برمجة التطبيقات المقدمة في أحدث إصدار منصة ولكن لا تعلن android:minSdkVersion السمة، ثم سيتم تشغيله بشكل صحيح على الأجهزة التي تعمل على أحدث إصدار من النظام الأساسي، ولكن ليس على الأجهزة التي تعمل الإصدارات السابقة من النظام الأساسي. في الحالة الأخيرة، سوف تعطل التطبيق في وقت التشغيل عند محاولة استخدام واجهات برمجة التطبيقات التي لا توجد على الإصدارات السابقة.

اختبار ضد مستويات أبي أعلى
بعد تجميع التطبيق الخاص بك، يجب التأكد من اختباره على النظام الأساسي المحدد في android:minSdkVersion التطبيق android:minSdkVersion السمة. للقيام بذلك، إنشاء أفد يستخدم إصدار منصة المطلوبة من قبل التطبيق الخاص بك. بالإضافة إلى ذلك، لضمان التوافق إلى الأمام، يجب تشغيل واختبار التطبيق على جميع الأنظمة الأساسية التي تستخدم مستوى أبي أعلى من تلك المستخدمة من قبل التطبيق الخاص بك.

يتضمن أندرويد سك إصدارات متعددة للمنصة التي يمكنك استخدامها، بما في ذلك أحدث إصدار، ويوفر أداة تحديث يمكنك استخدامها لتنزيل إصدارات الأنظمة الأساسية الأخرى حسب الضرورة.

للوصول إلى المحدث، استخدم أداة سطر الأوامر android ، الموجود في الدليل <سك> / أدوات. يمكنك إطلاق التحديث سك عن طريق تنفيذ android sdk سك. يمكنك أيضا ببساطة انقر نقرا مزدوجا فوق ملف android.bat (ويندوز) أو الروبوت (أوس X / لينكس).

لتشغيل التطبيق الخاص بك ضد إصدارات منصة مختلفة في المحاكي، إنشاء أفد لكل إصدار منصة تريد اختبار. لمزيد من المعلومات حول أفدس، راجع إنشاء وإدارة الأجهزة الظاهرية . إذا كنت تستخدم جهازا فعليا للاختبار، فتأكد من معرفة مستوى واجهة برمجة التطبيقات لنظام التشغيل أندرويد الذي يتم تشغيله. راجع الجدول أعلى هذا المستند للحصول على قائمة بإصدارات النظام الأساسي ومستويات واجهة برمجة التطبيقات.

تصفية الوثائق المرجعية حسب مستوى واجهة برمجة التطبيقات
تقدم صفحات الوثائق المرجعية في موقع مطوري برامج أندرويد عنصر تحكم "التصفية بحسب مستوى واجهة برمجة التطبيقات" في أعلى يمين منطقة كل صفحة. يمكنك استخدام عنصر التحكم لعرض الوثائق فقط لأجزاء من واجهة برمجة التطبيقات التي يمكن الوصول إليها فعليا للتطبيق الخاص بك، استنادا إلى مستوى أبي الذي android:minSdkVersion السمة android:minSdkVersion لملف البيان.

لاستخدام التصفية، حدد مربع الاختيار لتمكين التصفية، أسفل مربع بحث الصفحة مباشرة. ثم عين عنصر التحكم "التصفية حسب مستوى واجهة برمجة التطبيقات" إلى مستوى واجهة برمجة التطبيقات نفسه كما هو محدد من قبل تطبيقك. لاحظ أن واجهات برمجة التطبيقات التي تم إدخالها في مستوى أبي لاحق يتم تجاهلها بعد ذلك، كما أن محتوياتها مخفية، نظرا لأنها لن تكون متاحة للتطبيق.

التصفية حسب مستوى أبي في الوثائق لا توفر عرضا لما هو جديد أو تم تقديمه في كل مستوى أبي - فهو يوفر ببساطة طريقة لعرض أبي بالكامل المرتبطة بمستوى أبي معين، مع استبعاد عناصر واجهة برمجة التطبيقات التي تم إدخالها في مستويات أبي اللاحقة.

إذا قررت عدم رغبتك في تصفية وثائق واجهة برمجة التطبيقات، فما عليك سوى تعطيل الميزة باستخدام مربع الاختيار. بشكل افتراضي، يتم تعطيل تصفية مستوى واجهة برمجة التطبيقات، بحيث يمكنك عرض واجهة برمجة تطبيقات الإطار الكامل، بغض النظر عن مستوى واجهة برمجة التطبيقات.

لاحظ أيضا أن الوثائق المرجعية لعناصر أبي الفردية تحدد مستوى أبي الذي تم إدخال كل عنصر فيه. يتم تحديد مستوى واجهة برمجة التطبيقات للحزم والصفوف على أنها "منذ <أبي ليفيل>" في الجانب العلوي الأيسر من منطقة المحتوى في كل صفحة وثائق. يتم تحديد مستوى أبي لأعضاء الفصل في رؤوس الوصف التفصيلي، على الهامش الأيمن.



*-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*

للوضع الليلي في التطبيق DayNight

في هذا البرنامج التعليمي ، سنناقش ونستخدم موضوع Android DayNight في تطبيقنا. إذا كان لديك تطبيق يحتوي على مواد للقراءة ، فإن استخدام الوض...