android intent打开各种文件(txt、apk、ppt、xls和doc)的方法,下面有代码 直接运行
2023-09-14 09:14:00 时间
1.MainActivity.java
中:
public class MainActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button) findViewById(R.id.button_txt)).setOnClickListener(this);
((Button) findViewById(R.id.button_apk)).setOnClickListener(this);
((Button) findViewById(R.id.button_ppt)).setOnClickListener(this);
((Button) findViewById(R.id.button_xls)).setOnClickListener(this);
((Button) findViewById(R.id.button_doc)).setOnClickListener(this);
}
@Override
public void onClick(View v) {
String filePath;
Intent intent;
switch (v.getId()){
case R.id.button_txt:
filePath = "/storage/emulated/0/hello2.txt";
intent = FileUtils.openFile(this,filePath);
startActivity(intent);
break;
case R.id.button_apk:
filePath = "/storage/emulated/0/app-debug.apk";
intent = FileUtils.openFile(this,filePath);
startActivity(intent);
break;
case R.id.button_ppt:
filePath = "/storage/emulated/0/新建 PPT 演示文稿.ppt";
intent = FileUtils.openFile(this,filePath);
startActivity(intent);
break;
case R.id.button_xls:
filePath = "/storage/emulated/0/新建 XLS 工作表.xls";
intent = FileUtils.openFile(this,filePath);
startActivity(intent);
break;
case R.id.button_doc:
filePath = "/storage/emulated/0/新建 DOC 文档.doc";
intent = FileUtils.openFile(this,filePath);
startActivity(intent);
break;
}
}
}
2.FileUtils.java
中:
public class FileUtils {
//打开类型的文件
public static Intent openFile(Context context, String filePath) {
if (filePath == null) {
return null;
}
File file = new File(filePath);
if (!file.exists())
return null;
/* 取得扩展名 */
String end = file
.getName()
.substring(file.getName().lastIndexOf(".") + 1,
file.getName().length()).toLowerCase();
end = end.trim().toLowerCase();
// System.out.println(end);
/* 依扩展名的类型决定MimeType */
if (end.equals("apk")) {
return getApkFileIntent(context,filePath);
} else if (end.equals("ppt")) {
return getPptFileIntent(context,filePath);
} else if (end.equals("xls")) {
return getExcelFileIntent(context,filePath);
} else if (end.equals("doc")) {
return getWordFileIntent(context,filePath);
} else if (end.equals("pdf")) {
return getPdfFileIntent(context,filePath);
} else if (end.equals("txt")) {
return getTextFileIntent(context,filePath, false);
} else {
return getAllIntent(context,filePath);
}
}
// Android获取一个用于打开APK文件的intent
public static Intent getApkFileIntent(Context context,String param) {
Intent intent = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(new File(param)), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
return intent;
}
// Android获取一个用于打开PPT文件的intent
public static Intent getPptFileIntent(Context context,String param) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Uri uri = Uri.fromFile(new File(param));
Uri uri = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
return intent;
}
// Android获取一个用于打开Excel文件的intent
public static Intent getExcelFileIntent(Context context,String param) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Uri uri = Uri.fromFile(new File(param));
Uri uri = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(uri, "application/vnd.ms-excel");
return intent;
}
// Android获取一个用于打开Word文件的intent
public static Intent getWordFileIntent(Context context,String param) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Uri uri = Uri.fromFile(new File(param));
Uri uri = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(uri, "application/msword");
return intent;
}
// Android获取一个用于打开PDF文件的intent
public static Intent getPdfFileIntent(Context context,String param) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Uri uri = Uri.fromFile(new File(param));
Uri uri = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(uri, "application/pdf");
return intent;
}
// Android获取一个用于打开文本文件的intent
public static Intent getTextFileIntent(Context context,String param, boolean paramBoolean) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (paramBoolean) {
Uri uri1 = Uri.parse(param);
intent.setDataAndType(uri1, "text/plain");
} else {
// Uri uri2 = Uri.fromFile(new File(param));
Uri uri2 = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(uri2, "text/plain");
}
return intent;
}
// Android获取一个用于打开APK文件的intent
public static Intent getAllIntent(Context context,String param) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
// Uri uri = Uri.fromFile(new File(param));
Uri uri = FileProvider.getUriForFile(context, "com.filepath.intent.fileprovider", new File(param));
intent.setDataAndType(uri, "*/*");
return intent;
}
}
3.fileprovider.java中
public class fileprovider extends FileProvider {
}
4.AndroidManifest.xml
中:
......
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
......
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.filepath.intent.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
provider_paths.xml
中:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<!--<external-path path="Android/data/com.filepath.cursoradapter/" name="files_root" />-->
<external-path path="." name="external_storage_root" />
</paths>
相关文章
- Android 三大图片缓存原理、特性对比
- Android实例-利用WebBrowser实现浏览器(XE8+小米2)
- android binder机制详解
- android电话拦截
- Android Studio-解决Fetching android sdk component information加载过久问题
- Android 下文件cannot execute - Permission denied
- Flutter: 判断是Android还是Ios
- java泛型操作复习,以及讲解在android中使用的场景
- android 编程时,如何在Eclipse中查看Android源码或者第三方组件包源码
- Android学习---ListView和Inflater的使用,将一个布局文件转化为一个对象
- android 内部文件读取
- Rockchip Android平台常用调试命令汇总
- Android Framework 全面分析Zygote
- 如何下载安装最新版本的 Android Studio
- Android报错提示:Failed to resolve: com.android.support.constraint:constraint-layout:1.1.3
- Android Launcher中MainActivity监听不到Home事件的解决方案
- 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 替换 LoadedApk 中的类加载器 | 加载 DEX 文件中的 Activity 类并启动成功 )
- 【Android 逆向】修改 Android 系统文件 ( default.prop 配置信息 | 修改 default.prop 配置信息文件 )
- Android 上实现非root的 Traceroute -- 非Root权限下移植可运行二进制文件 脚本文件
- Android 使用 DownloadManager 管理系统下载任务的方法,android管理系统
- Build x264 for android
- 08_android入门_android-async-http开源项目介绍及用法
- Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
- Android 开发 --Unable to resolve target 'android-19'
- Android 6.0以上动态请求权限的工具类