我想在我的应用程序的列表视图中显示手机存储(内部或SD卡)中的所有视频,而我的旧代码在新的7.0设备上提供例外。我的targetSDK API级别为23.我还在IDE中收到一条警告:" managedQuery"方法已弃用。我在项目中使用的方法是:
private boolean getVideoList() {
Cursor var1 = this.managedQuery(Media.EXTERNAL_CONTENT_URI, new String[]{"_data", "_id", "_display_name", "duration"}, (String)null, (String[])null, " _id DESC");
int var2 = var1.getCount();
if(var2 <= 0) {
return false;
} else {
var1.moveToFirst();
for(int var4 = 0; var4 < var2; ++var4) {
Uri var5 = Uri.withAppendedPath(Media.EXTERNAL_CONTENT_URI, ContentUtill.getLong(var1));
String var6 = var1.getString(var1.getColumnIndexOrThrow("_display_name"));
String var7 = var1.getString(var1.getColumnIndex("_data"));
String var8 = ContentUtill.getTime(var1, "duration");
VideoData var9 = new VideoData(var6, var5, var7, var8);
this.videoList.add(var9);
var1.moveToNext();
}
return true;
}
}
例外是:
Caused by: java.lang.SecurityException:
at android.os.Parcel.readException (Parcel.java:1693)
at android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:135)
at android.content.ContentProviderProxy.query (ContentProviderNative.java:421)
at android.content.ContentResolver.query (ContentResolver.java:536)
at android.content.ContentResolver.query (ContentResolver.java:478)
at android.app.Activity.managedQuery (Activity.java:2368)
at video.format.converter.view.SelectVideoActivity.getVideoList (SelectVideoActivity.java:61)
at video.format.converter.view.SelectVideoActivity.access$0 (SelectVideoActivity.java:60)
at video.format.converter.view.SelectVideoActivity$loadVideo.doInBackground (SelectVideoActivity.java:170)
at video.format.converter.view.SelectVideoActivity$loadVideo.doInBackground (SelectVideoActivity.java:1)
at android.os.AsyncTask$2.call (AsyncTask.java:304)
at java.util.concurrent.FutureTask.run (FutureTask.java:237)
我确实在我的项目中实现了新的权限模型,我确实要求WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限,但仍然是异常。获取视频列表并使用属性填充我的POJO类的任何好方法:
public String Duration;
public Uri VideoUri;
public long videoId;
public String videoName;
public String videoPath;
答案 0 :(得分:0)
from tkinter import *
import matplotlib
import pandas as pd
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from matplotlib.figure import Figure
master = Tk()
separator3 = Frame(height=618,width=180, bd=4, bg='dodgerblue')
separator6 = Frame(height=250,width=240, bd=4, bg='dodgerblue')
separator1 = Frame(height=100,width=100, bd=1,bg='dodgerblue')
def get():
Disp_pos =10
Disp_neg =-12
w = Scale(separator6, from_=10, to=0,orient=VERTICAL)
w.set(Disp_pos)
w.pack(anchor=CENTER,side=TOP,ipady=10,ipadx=10)
Label1 = Label(separator6, text="")
Label1.pack(anchor=CENTER, side=TOP)
f3 = Figure(figsize=(2, 3), dpi=100)
canvas2 = FigureCanvasTkAgg(f3, master=separator3)
Label1 = Label(separator3,text=" WORD CLOUD ")
Label1.pack(anchor=CENTER, side=TOP)
ax3 = f3.add_subplot(111)
text = 'sample'
print(type(text))
ax3.set_wordcloud = WordCloud().generate(text)
ax3.imshow(ax3.set_wordcloud, interpolation='bilinear')
ax3.axis("off")
canvas2.show()
canvas2.get_tk_widget().pack( side=BOTTOM,fill=BOTH, expand=1)
canvas2.draw()
separator2 = Frame(height=150, width=280, bd=4, bg='dodgerblue')
scrollbar = Scrollbar(separator2)
scrollbar.pack(side=RIGHT, ipady=270, fill=Y)
Label1 = Label(separator2, text=" TEXT ",font=('Times', 12))
Label1.pack(anchor=CENTER, side=TOP)
i = 'sample sample sample'
Re=Listbox(separator2,yscrollcommand=scrollbar.set)
Re.insert(END, i)
Re.pack()
scrollbar.config(command=Re.yview)
separator2.pack(side=TOP, padx=10, pady=10, fill=BOTH)
Button1 = Button(separator1, text=' GET ', font=('Times',
15,'bold'),command=get, bg="wheat2",relief=RAISED)
Button1.pack(anchor=CENTER,pady=5)
separator1.pack(fill=BOTH,side=LEFT, padx=5, pady=5)
separator6.pack(fill=BOTH,side=RIGHT, padx=5, pady=5)
separator3.pack(side=BOTTOM,fill=BOTH,padx=5, pady=5)
master.config(bg='white')
master.title('sample')
mainloop()
答案 1 :(得分:0)
我认为您正在使用Android Marshmallow或更高版本。您需要获得READ_EXTERNAL_STORAGE的运行时权限。将它放入清单中将不适用于Android 6+。以下是添加运行时权限的链接。word2vec skip-gram model
不推荐使用托管查询,查询如下:
Cursor var1 = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, new String[]{"_data", "_id", "_display_name", "duration"}, (String)null, (String[])null, " _id DESC");