private void intentToApp() { Intent intent=new Intent(); String value = Settings.Secure.getString(mContext.getContentResolver(), "app_name"); String packageName = "com.sgrl.applications"; String className = "com.sgrl.applications.MainActivity"; List<String> installedPackages = getInstalledPackageNames(mContext); Log.d(TAG,"installedPackages:" + installedPackages); if (value != null && !value.isEmpty()) { String[] parts = value.split("_"); if (parts.length == 3) { packageName = parts[0]; className = parts[2]; if(installedPackages.contains(packageName) && className!=null){ intent.setClassName(packageName,className); }else{ packageName = "com.sgrl.applications"; className = "com.sgrl.applications.MainActivity"; intent.setClassName(packageName, className); } } } if (intent.getComponent() == null) { // 检查是否设置了组件 intent.setClassName(packageName, className); } intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } 为什么但className为null时,没有赋予新的className为com.sgrl.applications.MainActivity
时间: 2024-02-14 20:29:59 浏览: 116
Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码
在代码中,当 `className` 为 `null` 时没有赋予新的值 `com.sgrl.applications.MainActivity` 的原因是因为已经进行了一次判断,只有在 `installedPackages` 列表中包含 `packageName` 并且 `className` 不为 `null` 的情况下,才会设置 `intent` 的组件名为 `packageName` 和 `className`。如果不满足这个条件,则会使用默认的 `packageName` 和 `className`,即 `com.sgrl.applications.MainActivity`。因此,在 `className` 为 `null` 的情况下,没有执行赋值操作。
阅读全文