Android SD卡/内部应用程序的筛选列表

Android SD卡/内部应用程序的筛选列表,android,Android,更新我必须瞄准Android 2.1 我试图找出如何通过编程列出应用程序,通过SD卡或内部存储进行过滤 我甚至不知道该如何处理这个问题。我是否应该首先检测SD卡挂载点并查看其上是否有应用程序数据目录?比如说 if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { Intent mainIntent = new Intent(Intent.ACTIO

更新我必须瞄准Android 2.1

我试图找出如何通过编程列出应用程序,通过SD卡或内部存储进行过滤

我甚至不知道该如何处理这个问题。我是否应该首先检测SD卡挂载点并查看其上是否有应用程序数据目录?比如说

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
  Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);     
  List<ResolveInfo> intents = m_pm.queryIntentActivities(mainIntent, 0);
  File baseSD = Environment.getExternalStorageDirectory();

  int count = intents.size();
  for (int i = 0; i < count; i++) {
    String baseApp = intents.get(i).activityInfo.applicationInfo.dataDir;
    if (baseApp.startsWith(baseSD.getAbsolutePath()) {
      // This is on the SD card, do whatever with the app details
    }
    else {
      // This is on internal storage
    }
  }
}
if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_-MOUNTED)){
意图maintent=新意图(Intent.ACTION\u MAIN,空);
列表意图=m_pm.QueryInputActivities(mainIntent,0);
File baseSD=Environment.getExternalStorageDirectory();
int count=intents.size();
for(int i=0;i

看起来很低调,一定有更合适的方法。感谢您的帮助。

您可以使用此代码检查应用程序的安装位置:

PackageInfo pi = pm.getPackageInfo("packageName", 0);

if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0)
   ; // stored on internal storage
else 
   ; // stored on sd

小心点,因为FLAG_EXTERNAL_存储从Android API 8开始就可用。

感谢您的快速回复,它确实回答了我的初始问题,但我确实需要针对2.1。到目前为止,我能找到的所有示例都使用目录进行匹配。我将更新我的问题。考虑到这一点,我的应用程序的这部分没有意义除非他们使用的是2.2,否则这很好。对我来说也是一样,我的应用程序中有一部分可以从android 2.2开始使用。无论如何,请振作起来,因为85%的android版本都是2.2及以上版本。