ここでトリックを使用できます...
1)スタートアップ アクティビティを作成します。これは、作成時に画面サイズのみを検証し、成功シナリオで実際のアクティビティを開始します。お気に入り、
// In onCreate of startup activity
if (isTablet()) {
startActivity(new Intent(StartupActivity.this, MainActivity.class));
this.finish(); // don't forget to kill startup activity after starting main activity.
} else {
setContentView(R.layout.startup);
}
これが臨界点です。それ以外の場合は、このアクティビティにレイアウトを設定する必要があります。このアクティビティには、「サポートされていないデバイス」などのメッセージを含むラベルを付けることが理想的です。アプリケーションを閉じるボタン。
2)理想的には、タブレットのみをサポートする場合は、すべての文字列リソースをres/values-large/strings.xmlに配置する必要があります。ここにトリックがあります。文字列リソースに次の項目を追加するだけです...
<string name="is_supported_screen">true</string>
次に、 res/values/strings.xmlに新しい文字列リソース ファイルを作成します。これには、同じ文字列アイテムが含まれますが、次のようなfalse値が含まれます...
<string name="is_supported_screen">false</string>
注:この文字列リソース ファイルには、StarupActivity で使用される少なくともすべてのリソース (アクティビティのタイトル、サポートされていないデバイスのメッセージ、アプリを閉じるボタンのテキストなど) が含まれている必要があります。
3)最後に、StartupActivity に次のようなメソッドを記述します。
private boolean isTablet() {
if (Boolean.parseBoolean(context.getResources().getString(R.string.is_supported_screen))) {
return true;
} else {
return false;
}
}
そして、その完了... :)
実際にここで何が起こるかというと、タブレットのような大画面のデバイスの場合、 res/values-large/strings.xmlから文字列リソースをロードして検出true
し、他のデバイスの場合、android はres/values/strings からリソースをロードします。 xmlを検索すると、 の値のfalse
メソッドが int で見つかります。isTablet()
R.string.is_supported_screen
最後に、アプリがタブレットにインストールされている場合、メインのアクティビティが開始され、サポートされていないデバイスのメッセージが表示されます。
これはトリックであることを強調したいので、すべての手順を注意深く実行する必要があります。間違えると、望ましい結果が得られません。