Android QPython3 扩展:调用其他App打开文件
#需要QPythonSupport基础窗口 https://www.bilibili.com/read/cv9100444
【QPythonSupport/App/src/main/AndroidManifest.xml】添加
<activity
android:label="打开文件服务"
android:name=".OpenFile" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
【QPythonSupport/App/src/main/java/czc/qpython/support/OpenFile.java】
package czc.qpython.support;
import android.App.*;
import android.os.*;
import android.widget.*;
import android.text.*;
import java.io.*;
import android.net.*;
import android.content.*;
public class OpenFile extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState) {
Main.requestPermissions(this);
super.onCreate(savedInstanceState);
Intent intent=getIntent();
String path=intent.getStringExtra("path");
String type=intent.getStringExtra("type");
try {
Intent intentO = new Intent();
intentO.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentO.setAction(Intent.ACTION_VIEW);
intentO.setDataAndType(Uri.fromFile(new File(path)),type);
this.startActivity(intentO);
intentO.createChooser(intentO, "请选择对应的软件打开该文件!");
} catch (Exception e) {
Toast.makeText(this,e.toString(),Toast.LENGTH_LONG).show();
}
OpenFile.this.finish();
}
}
【QPythonSupport/__init__.py】添加
_mineType=eval(open(__file__[:__file__.rfind('/')+1]+'MineType.ini').read())
def OpenFile(Path,Wait=True):
ext=Path[Path.rfind('/')+1:]
ext=ext[ext.rfind('.')+1:].lower()
jsla('startActivity','android.intent.action.VIEW',None,None,{'path':Path,'type':_mineType.get(ext,'*/*')},Wait,'czc.qpython.support','czc.qpython.support.OpenFile')
_a=str(os)
_b=_a.find('com')
_c=_a.find('/',_b)
_qpyPkg=_a[_b:_c]
del _a,_b,_c
def OpenFileWithContentProvider(Path,Extras=None):
#需要 QPython OH 3.1.5 或以上 乘着船修改版
ext=Path[Path.rfind('/')+1:]
ext=ext[ext.rfind('.')+1:].lower()
jsla('view','content://%s.provider/root%s'%(_qpyPkg,Path),_mineType.get(ext,'*/*'),Extras)
【QPythonSupport/MineType.ini】
{
"3gp":"video/3gpp",
"3gpp":"video/3gpp",
"7z":"Application/x-7z-compressed",
"aac":"audio/x-mpeg",
"amr":"audio/x-mpeg",
"ape":"audio/x-mpeg",
"apk":"Application/vnd.android.package-archive",
"avi":"video/x-msvideo",
"asf":"video/x-ms-asf",
"asp":"Application/x-asap",
"asx":"video/x-ms-asf",
"au":"audio/basic",
"bz2":"Application/x-bzip2",
"bin":"Application/octet-stream",
"bmp":"image/bmp",
"c":"text/plain",
"class":"Application/octet-stream",
"conf":"text/plain",
"cpp":"text/plain",
"cgi":"magnus-internal/cgi",
"chm":"Application/vnd.ms-htmlhelp",
"css":"text/css",
"csv":"text/csv",
"dps":"Application/ksdps",
"doc":"Application/msword",
"docx":"Application/msword",
"dhtml":"text/html",
"dll":"Application/octet-stream",
"dmg":"Application/octet-stream",
"dms":"Application/octet-stream",
"eps":"Application/postscript",
"epub":"Application/epub+zip",
"et":"Application/kset",
"exe":"Application/octet-stream",
"flac":"audio/x-mpeg",
"flv":"video/x-msvideo",
"gif":"image/gif",
"gps":"Application/x-gps",
"gtar":"Application/x-gtar",
"gz":"Application/x-gzip",
"h":"text/plain",
"htm":"text/html",
"html":"text/html",
"hlp":"Application/winhlp",
"hqx":"Application/mac-binhex40",
"ico":"Application/octet-stream",
"jar":"Application/java-archive",
"java":"text/plain",
"jpeg":"image/jpeg",
"jpg":"image/jpeg",
"js":"Application/x-javascript",
"log":"text/plain",
"lrc":"text/plain",
"m3u":"audio/x-mpegurl",
"map":"magnus-internal/imagemap",
"mht":"message/rfc822",
"mhtml":"message/rfc822",
"mid":"audio/midi",
"midi":"audio/midi",
"m4a":"audio/mp4a-latm",
"m4u":"video/vnd.mpegurl",
"m4v":"video/x-m4v",
"mov":"video/quicktime",
"mp2":"audio/x-mpeg",
"mp3":"audio/x-mpeg",
"mp4":"video/mp4",
"mpeg":"video/mpeg",
"mpg":"video/mpeg",
"ogg":"audio/ogg",
"pcx":"image/x-pcx",
"pda":"image/x-pda",
"pdf":"Application/pdf",
"png":"image/png",
"pnz":"image/png",
"pot":"Application/vnd.ms-powerpoint",
"pps":"Application/vnd.ms-powerpoint",
"ppsx":"Application/vnd.ms-powerpoint",
"ppt":"Application/vnd.ms-powerpoint",
"pptx":"Application/vnd.ms-powerpoint",
"ps":"Application/postscript",
"pub":"Application/x-mspublisher",
"py":"text/plain",
"pyw":"text/plain",
"qt":"video/quicktime",
"qti":"image/x-quicktime",
"qtif":"image/x-quicktime",
"ra":"audio/x-pn-realaudio",
"ram":"audio/x-pn-realaudio",
"rgb":"image/x-rgb",
"rm":"audio/x-pn-realaudio",
"rmm":"audio/x-pn-realaudio",
"rnx":"Application/vnd.rn-realplayer",
"rp":"image/vnd.rn-realpix",
"rt":"text/vnd.rn-realtext",
"rtf":"Application/rtf",
"rar":"Application/x-rar-compressed",
"rmvb":"audio/x-pn-realaudio",
"swf":"Application/x-shockwave-flash",
"swfl":"Application/x-shockwave-flash",
"tar":"Application/x-tar",
"taz":"Application/x-tar",
"tgz":"Application/x-tar",
"tif":"image/tiff",
"tiff":"image/tiff",
"ttf":"Application/octet-stream",
"txt":"text/plain",
"vcd":"Application/x-cdlink",
"vcf":"text/x-vcard",
"viv":"video/vivo",
"vivo":"video/vivo",
"wav":"audio/x-wav",
"wma":"audio/x-ms-wma",
"wmv":"audio/x-ms-wmv",
"wps":"Application/kswps",
"wri":"Application/x-mswrite",
"x-gzip":"Application/x-gzip",
"xht":"Application/xhtml+xml",
"xhtm":"Application/xhtml+xml",
"xhtml":"Application/xhtml+xml",
"xla":"Application/vnd.ms-excel",
"xlc":"Application/vnd.ms-excel",
"xll":"Application/x-excel",
"xlm":"Application/vnd.ms-excel",
"xls":"Application/vnd.ms-excel",
"xlsx":"Application/vnd.ms-excel",
"xlt":"Application/vnd.ms-excel",
"xlw":"Application/vnd.ms-excel",
"xml":"text/xml",
"z":"Application/x-compress",
"zip":"Application/zip"
}
【QPythonSupport/说明.txt】添加
OpenFile(Path,Wait=True)
调用其他App打开文件(路径,等待=是)
路径格式:/sdcard/xxx/yyy.zzz
使用file://方式
可以修改MineType.ini文件
OpenFileWithContentProvider(Path,Extras=None)
调用其他App打开文件(路径,额外信息=无)
路径格式:/sdcard/xxx/yyy.zzz
必须等待文件操作完成
使用ContentProvider方式
需要 QPython OH 3.1.5 或以上 乘着船修改版
其余类似OpenFile

视频:https://www.bilibili.com/video/BV185411H7L7
新的QPython打开文件方法:https://www.bilibili.com/read/cv11037013
作者:乘着船@Bilibili
更多文章+下载链接:https://www.bilibili.com/read/readlist/rl321663