稼働しているPlatform(API level・バージョン)によって、動かなくなる機能があります。このため、自分のアプリが稼働している端末のPlatformを知る必要があります。
稼働しているPlatformによって動かなくなる例として、『「本体設定」の「音の設定」画面の表示』を挙げることができます。
概要は、「本体設定」の「音の設定」画面を表示するに書いておきました。その記事では、「Platform 2.2の場合」と「Platform 1.6の場合」を、startActivityForResultが発生するエラーによって切り分けていました。これは「エラーになるんだな」という学習にはなりますが、適切なcodeではありません。
稼働中のPlatformを取得し、そのPlatform毎に対応するのが適切です。
この問題の解決には次のサイトを見ながらcodingしていけば良いです。
Build.VERSION_CODES
sample codeは下記のとおりです。
public class SettingsActivity extends Activity
implements
OnClickListener
{
final String TAG = "me";
Button bu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bu = (Button)findViewById(R.id.Button);
bu.setOnClickListener(this);
}
@Override
public void onClick(View v){
if(v==bu){
Intent it;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR){
//Platform 2.0以上の場合
Log.d(TAG, "Platform 2.0 and later");
it = new Intent(Settings.ACTION_SOUND_SETTINGS);
}
else{
Log.d(TAG, "Platform 2.0 before");
it = new Intent(Settings.ACTION_DISPLAY_SETTINGS);
}
try{
startActivityForResult(it, 0);
}
catch(ActivityNotFoundException e){
Log.e(TAG, "ActivityNotFoundException");
}
}
}
}
なお、Platformの判別を適切に行い、かつPlatformが1.6でも稼働するアプリを作るには、次の措置を講じる必要があります。
- Android SDKを最新版にする。
- Eclipseのメニューコマンド>Project>Properties>Android>Project Build Target>platformを最新(最高)のものを選択する。
- AndroidManifest.xmlに次の1行を追加する。
上記2に書いたように、Project Build Target>platformを最新版にすることにより、codeの中でBuild.VERSION_CODES.ICE_CREAM_SANDWICHという定数を書くことができます(コンパイルエラーにならないようになります)。
上記3の措置を講じることにより、Platformが1.6でも無事稼働するようになります。
0 件のコメント:
コメントを投稿