AndroidManifest में: एंड्रॉइड की उम्मीद: स्क्रीनऑरिएशन = "अनिर्दिष्ट"


44

एंड्रॉइड स्टूडियो 3.6।

मैं चाहता हूं कि मेरा ऐप हमेशा portraitमोड में रहे। तो मेरे में AndroidMainfest.xml:

<activity
   android:name=".activity.SplashActivity"
   android:screenOrientation="portrait">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />

      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

मैं मोड SplashActivityमें शो और शो चलाता हूं portrait। अच्छा लगा। लेकिन संपादक निम्नलिखित त्रुटि दिखाता है:

Expecting android:screenOrientation="unspecified"

क्यों?

जवाबों:


67

अपने मैनिफ़ेस्ट टैग में (बस के नीचे xmlns:android="http://schemas.android.com/apk/res/android"), डालें

xmlns:tools="http://schemas.android.com/tools"

फिर एप्लीकेशन टैग के अंदर डालें

tools:ignore="LockedOrientationActivity"

या यदि आपके पास पहले से ही उपकरण हैं: एप्लिकेशन टैग में अनदेखा करें तो उपकरण के रूप में सेट करें: अनदेखा करें = "GoogleAppIndexingWarning, LockedOrientationActivity"
रहस्य

20

यह केवल एंड्रॉइड स्टूडियो 3.6+ को प्रभावित करता है

यहाँ क्या मुद्दा है? यह समस्या इसलिए होती है क्योंकि एंड्रॉइड फ़्रेमवर्क उपयोगकर्ता को एप्लिकेशन ओरिएंटेशन को नियंत्रित करना चाहता है, उदाहरण के लिए अपने ऐप ओरिएंटेशन को प्रतिबंधित करने की सलाह नहीं दी जाती है यदि कोई उपयोगकर्ता लैंडस्केप ओरिएंटेशन में ऐप का उपयोग करना चाहता है तो वह डिवाइस और सेंसर को फ़्लिप करता है, लेकिन जब कोई डेवलपर स्क्रीन ओरिएंटेशन को प्रतिबंधित करता है, तब भी जब रोटेशन सेंसर काम करता है ऐप पूर्व-परिभाषित स्थिति में रहेगा, एक तरह से आप उपयोगकर्ता की डिवाइस क्षमताओं को प्रतिबंधित कर रहे हैं।

अब क्या करे? आपके पास दो विकल्प हैं। पहला त्रुटि को अनदेखा करना है क्योंकि यह किसी भी बिल्ड विफलता का कारण नहीं होगा यहां तक ​​कि मैं भी ऐसा ही कर रहा हूं और एपीके / एएबी पीढ़ी हमेशा की तरह एक और विकल्प लैंडस्केप लेआउट प्रदान करने या कुछ में जैसे रोटेशन को संभालने के लिए है। एप्लिकेशन जो पहचानते हैं कि क्या अभिविन्यास बदल जाता है वे उपयोगकर्ता को अभिविन्यास बदलने के लिए संकेत देंगे क्योंकि ऐप ऐसे अभिविन्यास में समर्थित नहीं है

यह भविष्य में बदल सकता है => वर्तमान में यह हमारी निर्माण प्रक्रिया को प्रभावित नहीं कर रहा है लेकिन भविष्य में बदल सकता है


9

एंड्रॉइड स्टूडियो 3.6.0 में मुझे लगता है कि वे चाहते हैं कि उपयोगकर्ता ओरिएंटेशन को संभालें और डेवलपर को ViewModel सामान का उपयोग करने के लिए प्रोत्साहित करें । मुझे विस्तार से स्क्रीनऑरिएशन की व्याख्या करने दें

android:screenOrientation="portrait"

आपको वह त्रुटि देगा जो आपको निर्दिष्ट करनी है

android:screenOrientation="fullSensor" or android:screenOrientation="unspecified"

fullSensor का अर्थ है कि या तो आपके पास "रोटेट ऑफ" है या नहीं, यह आपके द्वारा फोन को स्थानांतरित करने के आधार पर अभिविन्यास को बदल देगा

अनिर्दिष्ट साधन यदि आपके पास रोटेट चालू है तो यह केवल उस अभिविन्यास में रहेगा और यदि नहीं तो यह आपके द्वारा फोन को स्थानांतरित करने के आधार पर अभिविन्यास को बदल देगा।



2

मैंने नीचे की प्रक्रिया का उपयोग किया है। यह मेरे लिए पूरी तरह से काम करता है। एंड्रॉइड स्टूडियो में 3.6.0 मुझे लगता है कि वे चाहते हैं कि उपयोगकर्ता ओरिएंटेशन को संभालें और डेवलपर को ViewModel सामान का उपयोग करने के लिए प्रोत्साहित करें। उस नजरअंदाज करने के लिए नीचे की प्रक्रिया का उपयोग करें।

सबसे पहले जोड़ें:

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

मेनिफ़ेस्ट टैग में।

दूसरी बात, जोड़ें

tools:ignore="LockedOrientationActivity" 

एप्लिकेशन टैग में। हैप्पी कोडिंग।


1

मुझे इस समस्या को हल करने के 2 तरीके मिले

प्रथम,

Android Studio -> Preferences (or settings in Windows)
-> search "chrome" 
-> Uncheck "Activity is locked to an orientation" 
-> apply and ok 
-> Sync Project with Gradle flie

दूसरा, `

Select "Run" from the main menu 
-> Edit Configurations.
-> Launch options - Launch
-> select Nothing or Specified Activity
-> Sync Project with Gradle file


0

मैंने इस मुद्दे का सामना किया है, मेरी आवश्यकता में, कुछ गतिविधि दोनों झुकाव का समर्थन करेगी और अवशेष चित्र में रखेगी, इस मामले में, मैंने निम्नलिखित चरणों का समाधान किया है:

केस -1: - ओरिएंटेशन लॉक करने के लिए

चरण -1: कृपया AndroidManifest.xml में निम्नलिखित पंक्ति टैग जोड़ें

उपकरण: उपेक्षा = "LockedOrientationActivity"

<application
android:name=".activity.MyApplication"
tools:ignore="LockedOrientationActivity">

चरण -2: यदि आप चित्र या परिदृश्य में स्क्रीन ओरिएंटेशन लॉक करना चाहते हैं, तो गतिविधि टैग में निम्न पंक्ति जोड़ें

एंड्रॉइड: स्क्रीनऑरिएशन = "पोर्ट्रेट" या "लैंडस्केप"

केस -2: - मान लीजिए कि यू विशेष गतिविधि में अभिविन्यास की अनुमति देना चाहते हैं और परिदृश्य के लिए एक विशिष्ट डिजाइन है

चरण -1: कॉन्फ़िगरेशन में ओरिएंटेशन मान निकालें और गतिविधि टैग से मौजूद होने पर स्क्रीन ओरिएंटेशन निकालें, और अभिविन्यास बदलते समय मूल्यों को खोए बिना गतिविधि में मेरे व्यक्तिगत सुझाव का उपयोग (LifecycleObserver) करें।

Android: configChanges = "ओरिएंटेशन"
android: स्क्रीनऑरिएशन = "पोर्ट्रेट" या "लैंडस्केप"

इस तरह से मैं इस मुद्दे को हल करता हूं, आशा है कि यह मदद करता है, धन्यवाद और हैप्पी कोडिंग।


0

इस समाधान का प्रयास करें:

AndroidMainfest:

<activity
    android:name="com.ui.activity.SplashActivity"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

उम्मीद है की यह मदद करेगा!


यह जवाब काम नहीं करता है, Android में 3.6
पेड्रो हेनरिक

0

आप इस कोड का उपयोग कर सकते हैं:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }

1
कृपया अपने उत्तर में कुछ स्पष्टीकरण जोड़ें, ताकि अन्य इससे सीख सकें
निको हसे

यदि अभिविन्यास चित्र ने उस गतिविधि के उन्मुखीकरण को बंद कर दिया। जिसका अर्थ है कि अभिविन्यास कभी भी परिदृश्य में नहीं बदला।
अबू बेकर नवाज

कृपया अपने उत्तर को सभी विवरणों में शामिल करने के लिए संपादित करें
निको हेस

-1

गतिविधि टैग में निम्नलिखित डालने का प्रयास करें

android:configChanges="orientation"
android:screenOrientation="portrait" 

मदद नहीं। यह चित्र और लैंडस्केप मोड है
a_subscriber

उत्तर को अपडेट करने के लिए आपको दोनों को जोड़ना होगा
स्वायंगजीत

1
यह एंड्रॉइड स्टूडियो 3.6 पर काम नहीं करता है।
Evgen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.