设为首页 加入收藏

TOP

Android启动Activity前确定Intent 能否解析
2015-02-02 14:17:00 来源: 作者: 【 】 浏览:7
Tags:Android 启动 Activity 确定 Intent 能否 解析

在自己的应用程序中利用第三方应用程序的Activity 和Service 是十分方便的,但是,你无法保证用户设备上安装了特定的某个应用程序,或者设备上有能够处理你的请求的应用程序。


因此,在调用startActivity 之前,确定调用是否可以解析为一个Activity 是一种很好的做法。


通过调用Intent 的resolveActivity 方法,并向该方法传入包管理器,可以对包管理器进行查询,


确定是否有Activity 能够启动以响应该Intent。


if (somethingWeird && itDontLookGood) {
? ? ? // Createthe impliciy Intent to use to start a new Activity.
? ? ? ? ? Intentintent =
? ? ? ? ? newIntent(Intent.ACTION_DIAL, Uri.parse("tel:555-2368"));
? ? ? ? ? // Check ifan Activity exists to perform this action.
? ? ? ? PackageManager pm = getPackageManager();
? ? ? ? ComponentName cn = intent.resolveActivity(pm);
? ? ? if (cn ==null) {
? ? ? // If thereis no Activity available to perform the action
? ? ? // Check tosee if the Google Play Store is available.
? ? ? ? ? UrimarketUri =
? ? ? ? Uri.parse("market://search?q=pname:com.myapp.packagename");
? ? ? ? ? IntentmarketIntent = new
? ? ? ? Intent(Intent.ACTION_VIEW).setData(marketUri);
? ? ? // If theGoogle Play Store is available, use it to download anapplication
? ? ? // capableof performing the required action. Otherwise log an
? ? ? //error.
? ? ? if(marketIntent.resolveActivity(pm) != null)
? ? ? ? startActivity(marketIntent);
? ? ? else
? ? ? ? ? Log.d(TAG,"Market client not available.");
? ? ? }
? ? ? else
? ? ? ? startActivity(intent);
? ? ? }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇线上性能检测工具之Btrace 下一篇Java常见问题之引用相等性和对象..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: