Java 找不到处理具有操作\视图意图的意图的活动
我正在构建一个简单的应用程序来复制视频。我这样做是为了勒恩的文本视图。我已经完成了所有,但当我复制一个应用程序崩溃的视频。我把所有代码都贴在这里。 这是主活动,也是应用程序的唯一活动Java 找不到处理具有操作\视图意图的意图的活动,java,android,eclipse,android-intent,logcat,Java,Android,Eclipse,Android Intent,Logcat,我正在构建一个简单的应用程序来复制视频。我这样做是为了勒恩的文本视图。我已经完成了所有,但当我复制一个应用程序崩溃的视频。我把所有代码都贴在这里。 这是主活动,也是应用程序的唯一活动 package com.example.movieplayer; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.database.Cursor; imp
package com.example.movieplayer;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.util.Log;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class MoviePlayerActivity extends Activity
implements OnItemClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_movie_player);
ArrayList<Movie> movieList = new ArrayList<Movie>();
// elenco campi per la query sui media
String[] mediaColumns = {
MediaStore.Video.Media._ID,
MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.MIME_TYPE
};
// elenco campi per la query sui thumbnail
String[] thumbnailColumns = { MediaStore.Video.Thumbnails.DATA };
// cursore sulle righe risultato
Cursor cursoreMedia = getContentResolver().
query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
mediaColumns, null, null, null);
// per ogni riga del risultto
if ((cursoreMedia != null) && cursoreMedia.moveToFirst()) {
do {
int id = cursoreMedia.getInt(cursoreMedia
.getColumnIndex(MediaStore.Video.Media._ID));
Cursor cursoreMiniature = getContentResolver().
query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
thumbnailColumns, MediaStore.Video.Thumbnails.VIDEO_ID
+ "=" + id, null, null);
// nuovo oggetto per l'arraylist
Movie movie = new Movie(cursoreMedia, cursoreMiniature);
movieList.add(movie);
} while (cursoreMedia.moveToNext());
}
MovieListAdapter movieListAdapter = new MovieListAdapter(this, movieList);
ListView movieListView = (ListView)findViewById(R.id.listView1);
movieListView.setAdapter(movieListAdapter);
movieListView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
Movie movie = (Movie) parent.getAdapter().getItem(position);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(movie.getMovieFilePath()),
movie.getMimeType());
startActivity(intent);
}
}
这是电影改编者
package com.example.movieplayer;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.VideoView;
@SuppressLint({ "InflateParams", "DefaultLocale" })
class MovieListAdapter extends BaseAdapter {
private Context context;
ArrayList<Movie> videoList;
public MovieListAdapter(Context context, ArrayList<Movie> movieList) {
this.context = context;
this.videoList = movieList; }
@Override
public int getCount() {
return videoList.size();
}
@Override
public Object getItem(int position) {
return videoList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater layoutInflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.movie_item, null);
}
Movie movie = (Movie) getItem(position);
// thumbnail
ImageView thumbnail =
(ImageView) convertView.findViewById(R.id.thumbnail);
if (movie.getThumbnailFilePath() != null) {
thumbnail.setImageURI(Uri.parse(movie.getThumbnailFilePath()));
} else {
thumbnail.setImageResource(R.drawable.ic_launcher);
}
//titolo
TextView titolo = (TextView) convertView.findViewById(R.id.titolo);
titolo.setText(movie.getTitolo());
//durata
TextView durata = (TextView) convertView.findViewById(R.id.durata);
durata.setText(getDurataAsString(movie.getDurata()));
return convertView;
}
private static String getDurataAsString(long durata) {
long secondi = durata / 1000;
long millisecondi = durata % 1000;
long minuti = secondi / 60;
secondi %= 60;
long ore = minuti / 60;
minuti %= 60;
String durataString = String.format("%1$02d:%2$02d:%3$02d.%4$03d",
ore, minuti, secondi, millisecondi);
return durataString;
}
}
有人知道问题出在哪里吗?更换:
Uri.parse(movie.getMovieFilePath()
与:
看看这是否有帮助。从错误消息中,您的Intent
中的Uri
没有方案,此更改将解决该问题。替换:
Uri.parse(movie.getMovieFilePath()
与:
看看这是否有帮助。从错误消息中,您的
Intent
中的Uri
没有任何方案,此更改应该可以解决该问题。有效。你能解释一下它到底是如何工作的以及为什么工作的吗?@Sash_-KP:是的,在回答的最后一句话中。有效的Uri
必须有一个方案<如果传入的字符串
没有方案,则code>Uri.parse()不会添加方案。因此,在普通路径中传递不适用于Uri.parse()
。它可以工作。你能解释一下它到底是如何工作的以及为什么工作的吗?@Sash_-KP:是的,在回答的最后一句话中。有效的Uri
必须有一个方案<如果传入的字符串
没有方案,则code>Uri.parse()不会添加方案。因此,传入普通路径不适用于Uri.parse()
。
Uri.parse(movie.getMovieFilePath()
Uri.fromFile(new File(movie.getMovieFilePath()))