AndroidManifestの場合:android:screenOrientation =“ unspecified”が必要です


44

Android Studio 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"

どうして?

回答:


68

マニフェストタグ(のすぐ下xmlns:android="http://schemas.android.com/apk/res/android")に、

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

次に、アプリケーションタグ内に、

tools:ignore="LockedOrientationActivity"

または、アプリケーションタグに既にtools:ignoreがある場合は、tools:ignore = "GoogleAppIndexingWarning、LockedOrientationActivity"として設定します

20

Android Studio 3.6以降のみに影響します

ここでの問題は何ですか?この問題は、Androidフレームワークがユーザーがアプリの向きを自分で制御することを望んでいるために発生します。たとえば、アプリの向きを制限することはお勧めできません。たとえば、ユーザーがアプリを横向きで使用したい場合、デバイスを反転するだけでセンサーは機能しますが、開発者は、画面の向きを制限します。回転セ​​ンサーが機能する場合でも、アプリは事前定義された状態のままで、ユーザーのデバイス機能を制限します。

今何をする?2つのオプションがあります。1つ目は、エラーを無視することです。同じことを行っていてもビルドエラーは発生せず、apk / aabの生成は通常どおりです。別のオプションは、横長のレイアウトを提供するか、一部のように回転を処理することです向きが変更されたかどうかを認識するアプリは、向きを変更するようにユーザーに促します。

将来変更される可能性があります=>現在、ビルドプロセスには影響していませんが、将来変更される可能性があります


9

Androidスタジオ3.6.0では、ユーザーが方向を処理して、開発者にViewModelのものを使用することを勧めたいと思います。screenOrientationについて詳しく説明しましょう

android:screenOrientation="portrait"

指定する必要があるエラーが発生します

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

fullSensorは、「回転オフ」がオンになっているかどうかによって、スマートフォンの移動に基づいて向きが変わることを意味します

未指定回転をオンにしている場合は、その方向にのみ留まり、そうでない場合は、携帯電話の移動に基づいて方向を変更します。



2

以下の手順を使用しました。それは私にとって完璧に機能します。Android Studio 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

私はこの問題に直面しました。私の要件では、一部のアクティビティは両方の向きをサポートし、残りは縦向きのままです。この場合、私は次の手順で解決しました:

Case-1:-向きをロックするには

ステップ-1:AndroidManifest.xml に次の行のApplicationタグを追加してください

tools:ignore = "LockedOrientationActivity"

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

ステップ-2:画面の向きを縦向きまたは横向きにロックする場合は、アクティビティタグに次の行を追加します

android:screenOrientation = "portrait"または "landscape"

ケース2:-特定のアクティビティで方向付けを許可し、ランドスケープに特定のデザインを持たせたい場合

ステップ-1: configchangesのOrientation値を削除し、アクティビティタグから存在する場合は画面の向きを削除します。また、向きを変更しても値を失うことなく、Activityで個人的な提案の使用(LifecycleObserver)を行います。

android:configChanges = "orientation"
android:screenOrientation = "portrait"または "landscape"

これが私がこの問題を解決する方法です。それが役に立てば幸いです。Thanks&Happy Coding。


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
他の人がそれから学ぶことができるように、あなたの回答にいくつかの説明を追加してください
ニコ・ハーゼ

向きの肖像画がそのアクティビティの向きをロックした場合。つまり、向きが横向きに変わることはありません。
Abu Baker Nawaz

すべての説明が含まれるように回答を編集してください
ニコ・ハーセ

-1

以下をアクティビティタグに入れてみてください

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

助けません。ポートレートモードとランドスケープモード
a_subscriber

両方を追加する必要がある回答を更新しました
Swayangjit

1
Android Studio 3.6では機能しません。
エフゲン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.