0

以下のコードを使用して、アプリケーションをaudio files共有メニューに登録します。

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="audio/*" />
</intent-filter>

アクティビティでファイル名を取得するにはどうすればよいですか?

私は以下のコードをテストしましたが、動作していません:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);

    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String action = intent.getAction();

    String FilePath  = "";

    if (Intent.ACTION_SEND.equals(action)) {   
        if (extras.containsKey(Intent.EXTRA_STREAM)) {
            Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
            FilePath = parseUriToFilename(uri);
        }
    }
}

public String parseUriToFilename(Uri uri) {
    String selectedFile = null;
    String filemanagerPath = uri.getPath();

    String[] projection = { MediaStore.Audio.Media.DATA};
    Cursor cursor = managedQuery(uri, projection, null, null, null);

    if (cursor != null) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        cursor.moveToFirst();
        selectedFile = cursor.getString(column_index);
    }

    if (selectedFile != null) {
        return selectedFile;
    }
    else if (filemanagerPath != null) {
        return filemanagerPath;
    }
    return null;
} 
4

1 に答える 1

1

アクティビティでファイル名を取得するにはどうすればよいですか?

を呼び出して、アクティビティを開始した をgetIntent()取得してから、 を呼び出して、開くコンテンツのを取得します。IntentgetData()IntentUri

于 2012-04-22T16:43:21.830 に答える