Di AndroidManifest: Mengharapkan android: screenOrientation = “tidak ditentukan”

44

Android Studio 3.6.

Saya ingin aplikasi saya selalu dalam portraitmode. Jadi di saya 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>

Saya menjalankan aplikasi dan SplashActivitymenunjukkan dalam portraitmode. Bagus. Tetapi editor menunjukkan kesalahan berikut:

Expecting android:screenOrientation="unspecified"

Mengapa?

a_subscriber
sumber

Jawaban:

68

Di tag manifes Anda (tepat di bawah xmlns:android="http://schemas.android.com/apk/res/android"), masukkan

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

Kemudian di dalam tag aplikasi, masukkan

tools:ignore="LockedOrientationActivity"
Darragh MacKenna
sumber
atau jika Anda sudah memiliki alat: abaikan dalam tag aplikasi lalu tetapkan sebagai alat: abaikan = "GoogleAppIndexingWarning, LockedOrientationActivity"
Misteri
20

ini hanya memengaruhi Android Studio 3.6+

Apa yang terjadi disini? Masalah ini terjadi karena kerangka kerja Android ingin agar pengguna mengontrol sendiri orientasi aplikasi. Tidak disarankan untuk membatasi orientasi aplikasi Anda, misalnya jika pengguna ingin menggunakan aplikasi dalam orientasi lanskap, ia hanya membalik perangkat dan sensor akan melakukan pekerjaan tetapi ketika pengembang membatasi orientasi layar, bahkan ketika sensor rotasi berfungsi, aplikasi akan tetap dalam kondisi yang telah ditentukan sebelumnya, dengan cara Anda membatasi kemampuan perangkat pengguna.

Apa yang harus dilakukan sekarang? Anda memiliki dua opsi., Pertama adalah untuk mengabaikan kesalahan karena tidak akan menyebabkan kegagalan membangun bahkan saya melakukan hal yang sama dan generasi apk / aab seperti biasa Opsi lain adalah untuk menyediakan Tata Letak Lansekap atau untuk menangani rotasi seperti pada beberapa aplikasi yang mengenali jika orientasi diubah mereka akan meminta pengguna untuk mengubah orientasi karena aplikasi tidak didukung dalam orientasi tersebut

Itu mungkin berubah di masa depan => saat ini tidak memengaruhi proses pembangunan kami tetapi mungkin berubah di masa depan

trinadh thatakula
sumber
9

Di Android studio 3.6.0 saya rasa mereka ingin pengguna menangani orientasi dan mendorong pengembang untuk menggunakan barang-barang ViewModel . Biarkan saya jelaskan screenOrientation secara detail

android:screenOrientation="portrait"

akan memberi Anda kesalahan yang harus Anda tentukan

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

fullSensor Berarti Anda memiliki ON "Rotate off" atau tidak itu akan mengubah orientasi berdasarkan Anda memindahkan telepon

Berarti tidak ditentukan jika Anda memiliki ON Rotate off maka itu akan tetap hanya dalam orientasi itu dan jika tidak maka itu akan mengubah orientasi berdasarkan Anda memindahkan telepon.

Rajat
sumber
4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"
Android
sumber
2
Bisakah Anda jelaskan juga apa gunanya kode ini.
Rahul
2

Saya telah menggunakan Prosedur di bawah ini. Ini bekerja dengan baik untuk saya. Di Android studio 3.6.0 saya pikir mereka ingin pengguna menangani orientasi dan mendorong pengembang untuk menggunakan barang-barang ViewModel. Gunakan Prosedur di bawah ini untuk mengabaikannya.

Pertama menambahkan:

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

dalam tag manifes.

Kedua, Tambah

tools:ignore="LockedOrientationActivity" 

dalam tag aplikasi. Selamat Coding.

Shohel Rana
sumber
1

Saya menemukan 2 cara untuk menyelesaikan masalah ini

Pertama,

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

Kedua, `

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

Tambahkan baris berikut setelah android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Kemudian klik Alt+Enter

masukkan deskripsi gambar di sini

Damo Gurcinovski
sumber
0

Saya telah menghadapi masalah ini, Dalam persyaratan saya, beberapa kegiatan akan mendukung kedua orientasi dan tetap akan tetap dalam potret, Dalam hal ini, saya memutuskan dengan langkah-langkah berikut:

Kasus-1: - Untuk mengunci Orientasi

Langkah-1: Silakan Tambahkan tag Aplikasi baris berikut di AndroidManifest.xml

alat: abaikan = "LockedOrientationActivity"

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

Langkah-2: Jika Anda ingin mengunci orientasi layar baik dalam potret atau lanskap, tambahkan baris berikut di tag aktivitas

android: screenOrientation = "portrait" atau "landscape"

Kasus-2: - Misalkan jika Anda ingin mengizinkan orientasi dalam aktivitas tertentu dan memiliki desain spesifik untuk lanskap

Langkah-1: Hapus nilai Orientasi dalam konfigurasi dan hapus orientasi layar jika ada dari tag aktivitas, dan saran pribadi saya gunakan (LifecycleObserver) di Aktivitas untuk tanpa kehilangan nilai saat mengubah orientasi.

android: configChanges = "orientasi"
android: screenOrientation = "portrait" atau "landscape"

Ini adalah cara saya mengatasi masalah ini, semoga membantu, Terima kasih & Selamat Coding.

MohanRaj S
sumber
0

Coba Solusi Ini:

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>

Semoga ini membantu!

Selesai
sumber
jawaban ini tidak berfungsi, di android 3.6
Pedro Henrique
0

Anda dapat menggunakan kode ini:

if(MainActivity.this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT){
        MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }
Abu Baker Nawaz
sumber
1
Silakan tambahkan beberapa penjelasan untuk jawaban Anda sehingga orang lain dapat belajar darinya
Nico Haase
jika potret orientasi mengunci orientasi aktivitas itu. yang berarti orientasi tidak pernah berubah menjadi lanskap.
Abu Baker Nawaz
Harap edit jawaban Anda untuk memuat semua penjelasan
Nico Haase
-1

Coba letakkan yang berikut ini di tag aktivitas

android:configChanges="orientation"
android:screenOrientation="portrait" 
Swayangjit
sumber
Tidak membantu. Ini modus potret dan lansekap
a_subscriber
Diperbarui jawaban Anda harus menambahkan keduanya
Swayangjit
1
Ini tidak berfungsi di Android Studio 3.6.
Evgen