나는 Intent.ACTION_SEND
과 비슷한 문제가 있습니다. 아마이 코드는 누군가를 위해 도움이 될 것입니다 :
/** Knowing intent and package name, set the component name */
public static Intent setComponentByPackageName(Context context, String packageName, Intent intent0) {
Intent intent = new Intent(intent0);
if (null == intent.getType()) {
intent.setType("text/plain");
}
PackageManager pm = context.getPackageManager();
List<ResolveInfo> rList = pm.queryIntentActivities(intent, 0);
// possible flags:
// PackageManager.MATCH_DEFAULT_ONLY PackageManager.GET_RESOLVED_FILTER
for (ResolveInfo ri : rList) {
if (packageName.equals(ri.activityInfo.packageName)) {
intent.setComponent(new ComponentName(packageName, ri.activityInfo.name));
return intent;
}
}
return null;
}
가합니다 (ResolveInfo 목록이 비어) 일을 만들려고 노력하는 과정에서, 나는 setType()이 (실종됐다 당신이하지 않는 것을 발견 사실 다음이 충분하므로, setType() 및 setPackage() 당신이 경우 setComponent()) 필요 : 당신이 다른 앱의 패키지 이름을 알고으로
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.setPackage("com.xxxxxx");
// ...
intent.putExtra(Intent.EXTRA_TEXT, text);
// ...
startActivityForResult(intent, ...);
[1] 소식 [이] 내 질문에 대한 답을 찾기 [1] : http://stackoverflow.com/questions/3872063/android-launch-an-application-from-another -application – teoREtik