先说一下格式,待会设置的mimeType格式:
统一格式:
- 视频:video/*
- 音频:audio/*
- 图片:image/*
- 全部:*/*
详细格式:
- rar:application/x-rar-compressed
- jpg:image/jpeg
- zip:application/zip
- pdf:application/pdf
- doc:application/msword
- docx:application/msword
- wps:application/msword
- xls:application/vnd.ms-excel
- et:application/vnd.ms-excel
- xlsx:application/vnd.ms-excel
- ppt:application/vnd.ms-powerpoint
- html:text/html
- htm:text/html
- txt:text/html
- mp3:audio/mpeg
- mp4:video/mp4
- 3gp:video/3gpp
- wav:audio/x-wav
- avi:video/x-msvideo
- flv:flv-application/octet-stream
……
1、举例:视频文件打开方式显示自己的APP:
<activity android:name="com.xaehu.livehd.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="video/*" />
</intent-filter>
</activity>
2、接收:
Intent intent = getIntent();
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
Uri uri = intent.getData();
if(uri != null){
//路径:
//String url = uri.getPath();
//真实路径:
//String url = getRealFilePath(this,uri);
}
}
附:获取真实路径方法:
public static String getRealFilePath( final Context context, final Uri uri ) {
if ( null == uri ) {
return null;
}
final String scheme = uri.getScheme();
String data = null;
if ( scheme == null ){
data = uri.getPath();
}
else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
data = uri.getPath();
} else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );
if ( null != cursor ) {
if ( cursor.moveToFirst() ) {
int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );
if ( index > -1 ) {
data = cursor.getString( index );
}
}
cursor.close();
}
}
return data;
}