我基本上有这个测试代码,我尝试过不同的变体。在此示例中,我已经检查了package_name(" com.twitter.android ")是否存在并已安装:
if (package_name.equals("") == false) {
Intent intentCanLaunch = getPackageManager().getLaunchIntentForPackage(package_name);
if (intentCanLaunch != null) {
//--
//
//--
if (v == buttonShare) {
//--
Intent shareIntent = new Intent();
shareIntent.setPackage(package_name);
//--
// shareIntent.setClassName(package_name, "com.twitter.android.PostActivity"); // not working either
//--
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri_internal_fileprovider);
//--
shareIntent.putExtra(Intent.EXTRA_TEXT,"ekstra_text");
shareIntent.putExtra(Intent.EXTRA_TITLE,"ekstra_title");
shareIntent.putExtra(Intent.EXTRA_SUBJECT,"ekstra_subject");
//--
shareIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//--
startActivity(shareIntent);
}
}
使用相同的代码为Instagram工作(虽然不能传递文本),但对于Twitter我得到错误" 无法执行非公开方法的android:onClick "在Android代码中
@Override
public void onClick(@NonNull View v) {
if (mMethod == null) {
mMethod = resolveMethod(mHostView.getContext(), mMethodName);
}
try {
mMethod.invoke(mHostView.getContext(), v);
} catch (IllegalAccessException e) {
throw new IllegalStateException(
"Could not execute non-public method for android:onClick", e);
} catch (InvocationTargetException e) {
throw new IllegalStateException(
"Could not execute method for android:onClick", e);
}
}
请注意,所有他的代码对于Twitter和Instagram都是一样的,我只是在交换" com.instagram.android "使用" com.twitter.android "