Android动态获取系统权限+调⽤外部应⽤读取本地⽂件(TBS+⾃定义)⼀、获取动态权限
1.创建Android应⽤,在配置⽂件中添加临时访问⽂件权限
<!-- android 7.0临时赋予访问权限 android:name="android.t.FileProvider" -->
<provider
android:name="t.FileProvider"
android:authorities="ample.build_input"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
新建xml⽂件,配置name和path路径
<?xml version="1.0" encoding="utf-8"?>
<paths>
<!-- name随便起-->
<external-path
name="camera_photos"
path="/"/>
</paths>
2.配置系统需要⽤到的系统权限
<!-- 向SD卡写⼊数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions"/>
3.编写申请动态权限⽅法,在onCreate()⽅法中调⽤
//申请权限
private boolean getPermission(Activity activity){
boolean rs=false;
// 声明⼀个集合,在后⾯的代码中⽤来存储⽤户拒绝授权的权
List<String> permissionList = new ArrayList<>();
String[] permissions = new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,//读取内存卡
Manifest.permission.WRITE_EXTERNAL_STORAGE,//写⼊内存卡
// Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,//允许挂载和反挂载⽂件系统可移动存储
// Manifest.permission.READ_PHONE_STATE,//读取⼿机状态和⾝份
/* Manifest.permission.ACCESS_WIFI_STATE,//获取使⽤Wi-Fi等WLAN⽆线⽹络
Manifest.permission.CHANGE_WIFI_STATE,//允许程序改变Wi-Fi连接状态
Manifest.permission.ACCESS_NETWORK_STATE,//允许程序访问有关GSM⽹络信息
Manifest.permission.CHANGE_NETWORK_STATE,//允许程序改变⽹络连接状态
Manifest.permission.INTERNET,//访问⽹络连接,可能产⽣GPRS流量
Manifest.permission.BLUETOOTH,//允许程序连接到已配对的蓝⽛设备
Manifest.permission.CAMERA,//相机
Manifest.permission.WRITE_SETTINGS,//允许程序读取或写⼊系统设置*/
};
permissionList.clear();
for (int i = 0; i < permissions.length; i++) {
if (ContextCompat.checkSelfPermission(activity, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
Log.e(TAG,"权限未允许:"+permissions[i]+"....");
permissionList.add(permissions[i]);
}
}
if (permissionList.isEmpty()) {//未授予的权限为空,表⽰都授予了
Log.e(TAG,"已经获取到了所有权限");
return true;
} else {//请求权限⽅法
String[] spermissions = Array(new String[permissionList.size()]);//将List转为数组
}
return rs;
}
4.处理授权回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
alertdialog使用方法if(requestCode==1){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
boolean request_rs=true;
for(int i=0;i<grantResults.length;i++){
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
request_rs=false;
}
}
if(request_rs){
Log.e("软件获取权限结果:","获取软件权限成功");
init();
}else{
Toast.makeText(this, "您拒绝了软件应⽤权限,因此⽆法使⽤该软件!", Toast.LENGTH_LONG).show(); showDialogTipUserGoToAppSettting();
}
}
}
}
若未获取的权限,则提醒⽤户⼿动开启权限
/**
* 提⽰⽤户去应⽤设置界⾯⼿动开启权限
*/
private void showDialogTipUserGoToAppSettting() {
new AlertDialog.Builder(this)
.setTitle("存储权限不可⽤")
.setMessage("请在-应⽤设置-权限-中,允许应⽤使⽤存储权限来保存⽤户数据")
.setPositiveButton("⽴即开启", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳转到应⽤设置界⾯
goToAppSetting();
android.os.Process.killProcess(android.Pid());
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
android.os.Process.killProcess(android.Pid());
}
}).setCancelable(false).show();
}
/**
* 跳转到当前应⽤的设置界⾯
*/
private void goToAppSetting() {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, 123);
}
⼆、调⽤应⽤打开本地⽂件
第⼀种,根据⽂件类型⾃动选取应⽤打开⽂件
1.创建⽂件类型数组
/**
* -- MIME 列表 --
*/
public static final String[][] MIME_MapTable = {
// --{后缀名, MIME类型} --
{".3gp", "video/3gpp"},{".3gpp", "video/3gpp"},{".aac", "audio/x-mpeg"},
{".amr", "audio/x-mpeg"},{".apk", "application/vnd.android.package-archive"},
{".avi", "video/x-msvideo"},
{".aab", "application/x-authoware-bin"},
{".aam", "application/x-authoware-map"},
{".aas", "application/x-authoware-seg"},
{".ai", "application/postscript"},
{".aif", "audio/x-aiff"},
{".aifc", "audio/x-aiff"},
{".aiff", "audio/x-aiff"},
{".als", "audio/x-alpha5"},
{".amc", "application/x-mpeg"},
{".ani", "application/octet-stream"},
{".asc", "text/plain"},
{".asd", "application/astound"},
{".asf", "video/x-ms-asf"},
{".asn", "application/astound"},
{".asp", "application/x-asap"},
{".asx", " video/x-ms-asf"},
{".avb", "application/octet-stream"},
{".awb", "audio/amr-wb"},
{".bcpio", "application/x-bcpio"},
{".bld", "application/bld"},
{".bld2", "application/bld2"},
{".bpk", "application/octet-stream"},
{".bz2", "application/x-bzip2"},
{".bin", "application/octet-stream"},
{".bmp", "image/bmp"},
{".c", "text/plain"},
{".class", "application/octet-stream"},
{".conf", "text/plain"},
{".cpp", "text/plain"},
{".cal", "image/x-cals"},
{".ccn", "application/x-cnc"},
{".cco", "application/x-cocoa"},
{".cdf", "application/x-netcdf"},
{".cgi", "magnus-internal/cgi"},
{".chat", "application/x-chat"},
{".clp", "application/x-msclip"},
{".cmx", "application/x-cmx"},
{".co", "application/x-cult3d-object"},
{".cod", "image/cis-cod"},
{".cpio", "application/x-cpio"},
{".cpt", "application/mac-compactpro"},
{".crd", "application/x-mscardfile"},
{".csh", "application/x-csh"},
{".csm", "chemical/x-csml"},
{".csml", "chemical/x-csml"},
{".css", "text/css"},
{".cur", "application/octet-stream"},
{".doc", "application/msword"},
{".dcm", "x-lml/x-evm"},
{".dcr", "application/x-director"},
{".dcx", "image/x-dcx"},
{".dhtml", "text/html"},
{".dir", "application/x-director"},
{".dll", "application/octet-stream"},
{".dmg", "application/octet-stream"},
{".dms", "application/octet-stream"},
{".dot", "application/x-dot"},
{".dvi", "application/x-dvi"},
{".dwf", "drawing/x-dwf"},
{".dwg", "application/x-autocad"},
{".dxf", "application/x-autocad"},
{".dxr", "application/x-director"},
{".ebk", "application/x-expandedbook"}, {".emb", "chemical/x-embl-dl-nucleotide"}, {".embl", "chemical/x-embl-dl-nucleotide"}, {".eps", "application/postscript"},
{".epub", "application/epub+zip"},
{".eri", "image/x-eri"},
{".es", "audio/echospeech"},
{".esl", "audio/echospeech"},
{".etc", "application/x-earthtime"},
{".etx", "text/x-setext"},
{".evm", "x-lml/x-evm"},
{".evy", "application/x-envoy"},
{".exe", "application/octet-stream"},
{".fh4", "image/x-freehand"},
{".fh5", "image/x-freehand"},
{".fhc", "image/x-freehand"},
{".fif", "image/fif"},
{".fm", "application/x-maker"},
{".fpx", "image/x-fpx"},
{".fvi", "video/isivideo"},
{".flv", "video/x-msvideo"},
{".gau", "chemical/x-gaussian-input"},
{".gca", "application/x-gca-compressed"}, {".gdb", "x-lml/x-gdb"},
{".gif", "image/gif"},
{".gps", "application/x-gps"},
{".gtar", "application/x-gtar"},
{".gz", "application/x-gzip"},
{".gif", "image/gif"},
{".gtar", "application/x-gtar"},
{".gz", "application/x-gzip"},
{".h", "text/plain"},
{".hdf", "application/x-hdf"},
{".hdm", "text/x-hdml"},
{".hdml", "text/x-hdml"},
{".htm", "text/html"},
{".html", "text/html"},
{".hlp", "application/winhlp"},
{".hqx", "application/mac-binhex40"},
{".hts", "text/html"},
{".ice", "x-conference/x-cooltalk"},
{".ico", "application/octet-stream"},
{".ifm", "image/gif"},
{".ifs", "image/ifs"},
{".imy", "audio/melody"},
{".ins", "application/x-net-install"},
{".ips", "application/x-ipscript"},
{".ipx", "application/x-ipix"},
{".it", "audio/x-mod"},
{".itz", "audio/x-mod"},
{".ivr", "i-world/i-vrml"},
{".j2k", "image/j2k"},
{".jad", "text/vnd.sun.j2me.app-descriptor"},
{".jam", "application/x-jam"},
{".jnlp", "application/x-java-jnlp-file"},
{".jpe", "image/jpeg"},
{".jpz", "image/jpeg"},
{".jwc", "application/jwc"},
{".jar", "application/java-archive"},
{".java", "text/plain"},
{".jpeg", "image/jpeg"},
{".jpg", "image/jpeg"},
{".js", "application/x-javascript"},
{".kjx", "application/x-kjx"},
{".lak", "x-lml/x-lak"},
{".latex", "application/x-latex"},
{".lcc", "application/fastman"},
{".lcl", "application/x-digitalloca"},
{".lcr", "application/x-digitalloca"},
{".lgh", "application/lgh"},
{".lha", "application/octet-stream"},
{".lml", "x-lml/x-lml"},
{".lmlpack", "x-lml/x-lmlpack"},
{".log", "text/plain"},
{".lsf", "video/x-ms-asf"},
{".lsx", "video/x-ms-asf"},
{".lzh", "application/x-lzh "},
{".m13", "application/x-msmediaview"},
{".m14", "application/x-msmediaview"},
{".m15", "audio/x-mod"},
{".m3u", "audio/x-mpegurl"},
{".m3url", "audio/x-mpegurl"},
{".ma1", "audio/ma1"},
{".ma2", "audio/ma2"},
{".ma3", "audio/ma3"},
{".ma5", "audio/ma5"},
{".man", "application/x-troff-man"},
{".map", "magnus-internal/imagemap"},
{".mbd", "application/mbedlet"},
{".mct", "application/x-mascot"},
{".mdb", "application/x-msaccess"},
{".mdz", "audio/x-mod"},
{".me", "application/x-troff-me"},
{".mel", "text/x-vmel"},
{".mi", "application/x-mif"},
{".mid", "audio/midi"},
{".midi", "audio/midi"},
{".m4a", "audio/mp4a-latm"},
{".m4b", "audio/mp4a-latm"},
{".m4p", "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"},
{".mpc", "application/ificate"}, {".mpe", "video/mpeg"},
{".mpeg", "video/mpeg"},
{".mpg", "video/mpeg"},
{".mpg4", "video/mp4"},
{".mpga", "audio/mpeg"},
{".msg", "application/vnd.ms-outlook"},
{".mif", "application/x-mif"},
{".mil", "image/x-cals"},
{".mio", "audio/x-mio"},
{".mmf", "application/x-skt-lbs"},
{".mng", "video/x-mng"},
{".mny", "application/x-msmoney"},
{".moc", "application/x-mocha"},
{".mocha", "application/x-mocha"},
{".mod", "audio/x-mod"},
{".mof", "application/x-yumekara"},
{".mol", "chemical/x-mdl-molfile"},
{".mop", "chemical/x-mopac-input"},
{".movie", "video/x-sgi-movie"},
{".mpn", "phun.application"}, {".mpp", "application/vnd.ms-project"},
{".mps", "application/x-mapserver"},
{".mrl", "text/x-mrml"},
{".mrm", "application/x-mrm"},
{".ms", "application/x-troff-ms"},
{".mts", "application/metastream"},
{".mtx", "application/metastream"},
{".mtz", "application/metastream"},
{".mzv", "application/metastream"},
{".nar", "application/zip"},
{".nbmp", "image/nbmp"},
{".nc", "application/x-netcdf"},
{".ndb", "x-lml/x-ndb"},
{".ndwn", "application/ndwn"},
{".nif", "application/x-nif"},
{".nmz", "application/x-scream"},
{".nokia-op-logo", "k-oplogo-color"}, {".npx", "application/x-netfpx"},
{".nsnd", "audio/nsnd"},
{".nva", "application/x-neva1"},
{".oda", "application/oda"},
{".oom", "application/x-atlasMate-plugin"},
{".ogg", "audio/ogg"},
{".pac", "audio/x-pac"},
{".pae", "audio/x-epac"},
{".pan", "application/x-pan"},
{".pbm", "image/x-portable-bitmap"},
{".pcx", "image/x-pcx"},
{".pda", "image/x-pda"},
{".pdb", "chemical/x-pdb"},
{".pdf", "application/pdf"},
{".pfr", "application/font-tdpfr"},
{".pgm", "image/x-portable-graymap"},
{".pict", "image/x-pict"},
{".pm", "application/x-perl"},
{".pmd", "application/x-pmd"},
{".png", "image/png"},
{".pnm", "image/x-portable-anymap"},
{".pnz", "image/png"},
{".pot", "application/vnd.ms-powerpoint"},
{".ppm", "image/x-portable-pixmap"},
{".pps", "application/vnd.ms-powerpoint"},
{".ppt", "application/vnd.ms-powerpoint"},
{".pqf", "application/x-cprplayer"},
{".pqi", "application/cprplayer"},
{".prc", "application/x-prc"},
{".proxy", "application/x-ns-proxy-autoconfig"},
{".prop", "text/plain"},
{".ps", "application/postscript"},
{".ptlk", "application/listenup"},
{".pub", "application/x-mspublisher"},
{".pvx", "video/x-pv-pvx"},
{".qcp", "audio/vnd.qcelp"},
{".qt", "video/quicktime"},
{".qti", "image/x-quicktime"},
{".qtif", "image/x-quicktime"},
{".r3t", "-realtext3d"},
{".ra", "audio/x-pn-realaudio"},
{".ram", "audio/x-pn-realaudio"},
{".ras", "image/x-cmu-raster"},
{".rdf", "application/rdf+xml"},
{".rf", "-realflash"},
{".rgb", "image/x-rgb"},
{".rlf", "application/x-richlink"},
{".rm", "audio/x-pn-realaudio"},
{".rmf", "audio/x-rmf"},
{".rmm", "audio/x-pn-realaudio"},
{".rnx", "-realplayer"},
{".roff", "application/x-troff"},
{".rp", "-realpix"},
{".rpm", "audio/x-pn-realaudio-plugin"},
{".rt", "-realtext"},
{".rte", "x-lml/x-gps"},
{".rtf", "application/rtf"},
{".rtg", "application/metastream"},
{".rtx", "text/richtext"},
{".rv", "-realvideo"},
{".rwc", "application/x-rogerwilco"},
{".rar", "application/x-rar-compressed"},
{".rc", "text/plain"},
{".rmvb", "audio/x-pn-realaudio"},
{".s3m", "audio/x-mod"},
{".s3z", "audio/x-mod"},
{".sca", "application/x-supercard"},
{".scd", "application/x-msschedule"},
{".sdf", "application/e-score"},
{".sea", "application/x-stuffit"},
{".sgm", "text/x-sgml"},
{".sgml", "text/x-sgml"},
{".shar", "application/x-shar"},
{".shtml", "magnus-internal/parsed-html"},
{".shw", "application/presentations"},
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论