diff --git a/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java b/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java
index 996158755c…56c6005361 100644
— a/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java
+++ b/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java
@@ -93,6 +93,8 @@ import java.util.List;
import java.util.Objects;
import java.util.Set;
+import android.os.SystemProperties;
+
/**
- This activity is displayed when the system attempts to start an Intent for
- which there is more than one matching activity, allowing the user to decide
@@ -256,6 +258,21 @@ public class ResolverActivity extends Activity {
intent.setFlags(intent.getFlags()&~Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
return intent;
}
- private void setupDefaultLauncher() {
- int position = mAdapter.getDefaultHomePosition(“net.spidercontrol.automb”);
- //如果不存在则return
- if (position == -1) {
- Log.e(TAG, “position:”+position);
- return;
- }
- Log.e(TAG, “position:::”+position);
- startSelected(position, true, false);
- finish();
- }
@Override
protected void onCreate(Bundle savedInstanceState) {
-
@@ -367,6 +384,20 @@ public class ResolverActivity extends Activity {
- MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_NONE_FEATURED,
intent.getAction() + “:” + intent.getType() + “:”
+ (categories != null ? Arrays.toString(categories.toArray()) : “”));
-
Log.e(TAG, "postDelayed:"); -
boolean aBoolean = SystemProperties.getBoolean("persist.sys.first", true); -
if(aBoolean){ -
getMainThreadHandler().postDelayed(new Runnable() { -
@Override -
public void run() { -
setupDefaultLauncher(); -
} -
},600); -
}else{ -
setupDefaultLauncher(); -
} -
}
protected void onProfileClick(View v) {
@@ -904,6 +935,7 @@ public class ResolverActivity extends Activity {
&& !ri.handleAllWebDataURI && id == R.id.button_always) {
showSettingsForSelected(ri);
} else { -
Log.v(TAG,"111111111"+hasIndexBeenFiltered); startSelected(which, id == R.id.button_always, hasIndexBeenFiltered); }}
@@ -927,6 +959,8 @@ public class ResolverActivity extends Activity {
}public void startSelected(int which, boolean always, boolean hasIndexBeenFiltered) {
-
Log.e(TAG, "startSelected:"); -
Log.e(TAG, "isFinishing:"+isFinishing()); if (isFinishing()) { return; }
@@ -936,13 +970,19 @@ public class ResolverActivity extends Activity {
com.android.internal.R.string.activity_resolver_work_profiles_support),
ri.activityInfo.loadLabel(getPackageManager()).toString()),
Toast.LENGTH_LONG).show();
-
Log.e(TAG, "mResolvingHome:"+mResolvingHome); return; }
-
Log.e(TAG, "which:"+which+" hasIndexBeenFiltered:"+hasIndexBeenFiltered); TargetInfo target = mAdapter.targetInfoForPosition(which, hasIndexBeenFiltered); -
if(target !=null){ -
Log.e(TAG, "target:"+target.getResolveInfo()); -
} -
if (target == null) { return; } -
Log.e(TAG, "onTargetSelected:"); if (onTargetSelected(target, always)) { if (always && mSupportsAlwaysUseOption) { MetricsLogger.action(
@@ -971,7 +1011,7 @@ public class ResolverActivity extends Activity {
protected boolean onTargetSelected(TargetInfo target, boolean alwaysCheck) {
final ResolveInfo ri = target.getResolveInfo();
final Intent intent = target != null ? target.getResolvedIntent() : null;
-
Log.e(TAG, "intent:"+intent); if (intent != null && (mSupportsAlwaysUseOption || mAdapter.hasFilteredItem()) && mAdapter.mUnfilteredResolveList != null) { // Build a reasonable intent filter, based on what matched.
@@ -1282,6 +1322,8 @@ public class ResolverActivity extends Activity {
mAdapterView.setVisibility(View.VISIBLE);
onPrepareAdapterView(mAdapterView, mAdapter);
}
+
+
return false;
}
@@ -1668,6 +1710,19 @@ public class ResolverActivity extends Activity {
finish();
}
}
+
-
public int getDefaultHomePosition(String packageName){ -
Log.e(TAG, "mDisplayList:"+mDisplayList.size()); -
for (int i = 0; i < mDisplayList.size(); i++) { -
ResolveInfo info = mDisplayList.get(i).getResolveInfo(); -
Log.e(TAG, "info:"+info); -
if (info.activityInfo.packageName.equals(packageName)) { -
return i; -
} -
} -
return -1; -
} public void setPlaceholderCount(int count) { mPlaceholderCount = count;
@@ -1972,6 +2027,8 @@ public class ResolverActivity extends Activity {
return;
}
}
-
Log.e(TAG, "addResolveInfo getResolveInfo:"+dri.getResolveInfo()); -
// Log.e(TAG, "addResolveInfo getResolvedIntent:"+dri.getResolvedIntent()); mDisplayList.add(dri); } }
@@ -2011,14 +2068,16 @@ public class ResolverActivity extends Activity {
@Nullable
public TargetInfo getItem(int position) {
-
Log.v(TAG,"mFilterLastUsed:"+mFilterLastUsed +" mLastChosenPosition:"+mLastChosenPosition ); if (mFilterLastUsed && mLastChosenPosition >= 0 && position >= mLastChosenPosition) { position++; }
-
if (mDisplayList.size() > position) {
-
Log.v(TAG,"position:"+position +" mDisplayList.size():"+mDisplayList.size() ); -
if (mDisplayList.size() > position) { return mDisplayList.get(position);
-
} else { -
return null; -
}
-
} else { -
return null; -
} } public long getItemId(int position) {
@@ -2202,6 +2261,7 @@ public class ResolverActivity extends Activity {
}
mLastSelected = checkedPos;
} else {
-
Log.v(TAG,"22222222"); startSelected(position, false, true); } }
本文档详细介绍了如何在Android 10.0系统中修改ResolverActivity,用于处理Intent选择多匹配项的情况。源代码变更展示了如何设置默认启动器,并特别关注了`setupDefaultLauncher()`方法,该方法根据给定包名查找默认启动位置并执行相应操作。



1786

被折叠的 条评论
为什么被折叠?



