调用Android系统安装的软件打开文件,程序停止运行 android文件管理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是你可以先搜索一下有没有对应的intent filter,如果没有找到就提示用户。 刚学android不久,请问该怎么搜索 出处package com.example.packagemanager; import java.util.Collections;import java.util.List;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager;import android.content.pm.ResolveInfo;import android.os.Bundle;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getAppInfo(); } private void getAppInfo() { // 获取PackageManager对象 PackageManager pm = this.getPackageManager(); // 设置<intent-filter>标签内需要满足的条件 Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_DEFAULT); // 通过queryIntentActivities获取ResolveInfo对象 List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); // 调用系统排序,根据name排序 // 该排序很重要,否则只能显示系统应用,不能显示第三方应用 // 其实我测试发现有没有其实是一样的,就是输出的顺序是乱的 Collections.sort(resolveInfos, new ResolveInfo.DisplayNameComparator(pm)); for (ResolveInfo resolveInfo : resolveInfos) { String appName = resolveInfo.loadLabel(pm).toString();// 获取应用名称 String packageName = resolveInfo.activityInfo.packageName;// 包名 String className = resolveInfo.activityInfo.name;// 入口类名 System.out.println("程序名:" + appName + " 包名:" + packageName + " 入口类名:" + className); } } } 或者捕捉startActivity的异常,但是这种方式比较粗暴。 Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "video/*"); startActivity(intent);我是在做一个文件管理器,点击文件时调用系统软件,比如上面的代码那样打开视频文件时调用视频软件,可是当系统没有安装视频软件时程序就停止运行了,求指教 try { //把你7楼的代码放在这里} catch (Exception e) { //提示用户没有找到} 何必呢,直接使用// 获取PackageManager对象 PackageManager pm = this.getPackageManager(); // 设置<intent-filter>标签内需要满足的条件 Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_DEFAULT); if(intent.resolveActivity(pm)!=null){ startActivity(intent); }else{ //在这里处理没有可打开程序的事件 }这样先通过 intent.resolve 查询事件可否处理,然后再启动事件,或者自行处理就好了 Android背景图片设置,菜鸟求救! android x86 MapView 实例化报错?求解 新手请教一个问题,关于android的工程名 窗帘的自动升降 eclipse building 卡住 【求助】the application xxx (...) has stopped unexpectedly... opengles 阴影 android自定义控件怎么留住焦点? 关于Log输出的小白问题 自定义封装layout提示空指针 写了个android键盘,请问怎么实现backspace的功能 关于事件的分发与传递
import java.util.Collections;
import java.util.List;import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getAppInfo();
} private void getAppInfo() {
// 获取PackageManager对象
PackageManager pm = this.getPackageManager();
// 设置<intent-filter>标签内需要满足的条件
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_DEFAULT); // 通过queryIntentActivities获取ResolveInfo对象
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY); // 调用系统排序,根据name排序
// 该排序很重要,否则只能显示系统应用,不能显示第三方应用
// 其实我测试发现有没有其实是一样的,就是输出的顺序是乱的
Collections.sort(resolveInfos,
new ResolveInfo.DisplayNameComparator(pm)); for (ResolveInfo resolveInfo : resolveInfos) {
String appName = resolveInfo.loadLabel(pm).toString();// 获取应用名称
String packageName = resolveInfo.activityInfo.packageName;// 包名
String className = resolveInfo.activityInfo.name;// 入口类名
System.out.println("程序名:" + appName + " 包名:" + packageName
+ " 入口类名:" + className);
}
}
}
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "video/*");
startActivity(intent);我是在做一个文件管理器,点击文件时调用系统软件,比如上面的代码那样打开视频文件时调用视频软件,可是当系统没有安装视频软件时程序就停止运行了,求指教
try {
//把你7楼的代码放在这里
} catch (Exception e) {
//提示用户没有找到
}
PackageManager pm = this.getPackageManager();
// 设置<intent-filter>标签内需要满足的条件
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_DEFAULT);
if(intent.resolveActivity(pm)!=null){
startActivity(intent);
}else{
//在这里处理没有可打开程序的事件
}这样先通过 intent.resolve 查询事件可否处理,然后再启动事件,或者自行处理就好了