Android启动另一个APP时,注意disable与enable的问题

 在写游戏sdk时候遇到了一个需要在sdk中通过scheme来启动支付宝的免密支付功能,所以需要在设备中通过包名检查一下支付宝是否存在。

 此时遇到了一个问题,在三星设备中可以将app给处于disable状态:

 

 

 1 PackageManager packageManager = getPackageManager();
 2         List<ApplicationInfo> list1 = packageManager
 3                 .getInstalledApplications(128);
 4         if (list1.size() != 0) {
 5             for (ApplicationInfo info : list1) {
 6                 // 如果是false,代表application里的所有组件都禁用
 7                 boolean enable = info.enabled;
 8                 Log.i(TAG, "enable: " + enable);
 9                 if (enable == false) {
10                     Log.e(TAG, "false:" + info.packageName);
11                 }
12                 Log.i(TAG, "=======================================");
13             }
14         }

 

 此时照例去启动联系人这个app:

1 Intent intent=new Intent();   
2 intent=manager.getLaunchIntentForPackage("com.android.contacts");  
3 startActivity(intent);

 会出现异常:

 

 但是当将这个app重置于enable状态时:就可以成功启动!

 所以,之后在启动三方的app时候,一定要检查对应的状态,处于enable状态时候才去启动:

 

 1                  String packageName = "com.android.contacts" ;
 2                  try {
 3                          PackageManager manager = MainActivity.this.getPackageManager();
 4                          //1) 先通过adb命令找出packageName获取相应的PackageInfo
 5                          PackageInfo packageInfo = manager.getPackageInfo(packageName, 0); 
 6                          ApplicationInfo applicationInfo = packageInfo.applicationInfo;  
 7 
 8                          //2) 通过applicationInfo.enabled来判断应用是否可用
 9                          boolean enabled = applicationInfo.enabled;  
10                          if (enabled) {
11                              Log.e(TAG, "此时处于enabled状态");  
12                              Intent intent=new Intent();   
13                              intent = manager.getLaunchIntentForPackage(packageName);  
14                              startActivity(intent); 
15                            }
16                          else{
17                              Log.e(TAG, "此时处于disable状态");
18                          }
19                       } catch (PackageManager.NameNotFoundException e) {
20                              Log.e(TAG, "此时没有这个app");
21                              e.printStackTrace();
22                       }

 

转载于:https://www.cnblogs.com/wufeng0927/p/5125062.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值