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?

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"

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


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.


4
tools:ignore="GoogleAppIndexingWarning,LockedOrientationActivity"

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.


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

1

Tambahkan baris berikut setelah android:screenOrientation="portrait"

tools:ignore="LockedOrientationActivity"

Kemudian klik Alt+Enter

masukkan deskripsi gambar di sini


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.


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!


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);
    }

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" 

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.