2014-09-19 44 views
0

我有这样的方法来扫描拍摄镜头与我的应用程序后,文件的媒体:获取参数

public static void refreshMedia() { 
     MediaScannerConnection.scanFile(this, 
       new String[] { photo.toString() }, null, 
       new MediaScannerConnection.OnScanCompletedListener() { 
      public void onScanCompleted(String path, Uri uri) { 
       Log.i("ExternalStorage", "Scanned " + path + ":"); 
       Log.i("ExternalStorage", "-> uri=" + uri);    
      } 
     }); 
    } 

现在我需要以检索,它是此方法的参数的URI ..我怎么能做它?因为我需要使用URI在另一个类..

回答

1
private static Uri mUri; // private variable in your class 
.... 
public static void refreshMedia() { 
    MediaScannerConnection.scanFile(this, 
      new String[] { photo.toString() }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
     public void onScanCompleted(String path, Uri uri) { 
      mUri = uri; //<--Add this line to assign uri to mUri 
      Log.i("ExternalStorage", "Scanned " + path + ":"); 
      Log.i("ExternalStorage", "-> uri=" + uri);    
     } 
    }); 
} 

编辑:

之前开始新的意图:在其他类

Intent i = new Intent(FirstScreen.this, SecondScreen.class); 
i.putExtra("MY_Uri", mUri); 

String mUri; //private variable 

onCreate()

Bundle extras = getIntent().getExtras(); 
if(extras == null) { 
    mUri= null; 
} else { 
    mUri= extras.getString("MY_Uri"); 
} 
+0

不,变量必须是静态的。否则'mUri'将重置为默认值,如果类实例化 – 2014-09-19 10:39:48

+0

好的。你已经编辑过。 – 2014-09-19 10:40:13

+1

是的,我编辑了我的代码.. :) – 2014-09-19 10:40:14

1

用getter和setter创建一个static类变量。

private static Uri uri; 

然后存储uri从其他地方得到这个值。

public static void refreshMedia() { 
    MediaScannerConnection.scanFile(this, 
      new String[] { photo.toString() }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 
        YourClassName.uri=uri; // store uri 
        Log.i("ExternalStorage", "Scanned " + path + ":"); 
        Log.i("ExternalStorage", "-> uri=" + uri); 
       } 
      }); 
}