欢迎光临散文网 会员登陆 & 注册

Android QPython3 扩展:调用其他App打开文件

2021-01-03 22:29 作者:乘着船  | 我要投稿

#需要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


Android QPython3 扩展:调用其他App打开文件的评论 (共 条)

分享到微博请遵守国家法律