Запуск Twitter в Twitter

Я использую код ниже для запуска твиттер-намерения, но не работает. У меня есть приложение для Twitter, установленное на моем телефоне. Нужна помощь!

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share"); PackageManager pm = contexto.getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shareIntent.setComponent(name); contexto.startActivity(shareIntent); break; } } 

Получение исключения, когда я пытаюсь вызвать действие:

  android.content.ActivityNotFoundException: Unable to find explicit activity class {com.twitter.android/com.twitter.android.PostActivity}; have you declared this activity in your AndroidManifest.xml? 

Solutions Collecting From Web of "Запуск Twitter в Twitter"

Как правило, для запуска фида пользователя

 Intent intent = null; try { // get the Twitter app if possible this.getPackageManager().getPackageInfo("com.twitter.android", 0); intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USERID")); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } catch (Exception e) { // no Twitter app, revert to browser intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/USERID_OR_PROFILENAME")); } this.startActivity(intent); 

Для почтового намерения

 Intent tweetIntent = new Intent(Intent.ACTION_SEND); tweetIntent.putExtra(Intent.EXTRA_TEXT, "This is a Test."); tweetIntent.setType("text/plain"); PackageManager packManager = getPackageManager(); List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY); boolean resolved = false; for(ResolveInfo resolveInfo: resolvedInfoList){ if(resolveInfo.activityInfo.packageName.startsWith("com.twitter.android")){ tweetIntent.setClassName( resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name ); resolved = true; break; } } if(resolved){ startActivity(tweetIntent); }else{ Toast.makeText(this, "Twitter app isn't found", Toast.LENGTH_LONG).show(); } 

Немного исправлено (спасибо Taranfx) намерение фида пользователя (смените user_id => screen_name ):

  public static void startTwitter(Context context) { Intent intent = null; try { // get the Twitter app if possible context.getPackageManager().getPackageInfo("com.twitter.android", 0); intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?screen_name=<place_user_name_here>")); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return intent; } catch (Exception e) { // no Twitter app, revert to browser intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/<place_user_name_here>")); } startActivity(intent); }