PackageManager を使用して ApplicationInfo を取得し、そこからFLAG_EXTERNAL_STORAGEの「フラグ」を確認できます。
これは私がデモンストレーションのために作った簡単な例です:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PackageManager pm = getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo("com.totsp.helloworld", 0);
ApplicationInfo ai = pi.applicationInfo;
// this only works on API level 8 and higher (check that first)
Toast
.makeText(
this,
"Value of FLAG_EXTERNAL_STORAGE:"
+ ((ai.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == ApplicationInfo.FLAG_EXTERNAL_STORAGE),
Toast.LENGTH_LONG).show();
} catch (NameNotFoundException e) {
// do something
}
}
それでも、状況に応じて (すべての「メディア」を前もって持っているかどうか、またはユーザーがアプリを使用するときに取得/作成するかどうか)、関係なく外部ストレージに配置することをお勧めします。大きなサイズの内部アプリは、多くのユーザーから嫌われています (そして、多くの内部メディアはおそらく巨大化するでしょう)。