从我的应用程序运行Twitter应用程序打开特定的Twitter帐户

时间:2011-09-21 11:17:57

标签: android twitter

我今天搜索过这个 Open Twitter app from other app and load some page 代码来自该帖子

try{
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_TEXT, "this is a tweet");
            intent.setType("text/plain");
            final PackageManager pm = getPackageManager();
            final List<?> activityList = pm.queryIntentActivities(intent, 0);
            int len =  activityList.size();
            for (int i = 0; i < len; i++) {
                final ResolveInfo app = (ResolveInfo) activityList.get(i);
                if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) {
                    final ActivityInfo activity=app.activityInfo;
                    final ComponentName name=new ComponentName(activity.applicationInfo.packageName, activity.name);
                    intent.addCategory(Intent.CATEGORY_LAUNCHER);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                    intent.setComponent(name);
                    startActivity(intent);
                    break;
                }
            }
      }
        catch(final ActivityNotFoundException e) {
            Log.i("twitter", "no twitter native",e );
        }

及其完美的工作。

我的问题是,我是否可以在此代码中插入一些内容来打开特定的Twitter帐户,例如从我的网站打开Twitter帐户。

由于

更新

myWebView = (WebView) findViewById(R.id.webview); // Create an instance of WebView and set it to the layout component created with id webview in main.xml
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.loadUrl("https://mobile.twitter.com/XXXXXXXXXXXX"); // Specify the URL to load when the application starts
        //myWebView.loadUrl("file://sdcard/"); // Specify a local file to load when the application starts. Will only load file types WebView supports
        myWebView.setWebViewClient(new WebViewKeep());
        myWebView.setInitialScale(1); // Set the initial zoom scale
        myWebView.getSettings().setBuiltInZoomControls(true); // Initialize zoom controls for your WebView component
        myWebView.getSettings().setUseWideViewPort(true); // Initializes double-tap zoom control
        myWebView.getSettings().setUserAgentString("blablabla");

1 个答案:

答案 0 :(得分:0)

您想在官方移动Twitter应用程序中打开特定用户的Twitter流吗?

这可能是可能的,但需要一些逆向工程,因为移动应用程序没有定义官方集成点:

  • 在您的电脑上获取官方Twitter应用的APK。例如,您可以使用ASTRO file manager中的应用备份工具将应用打包到.apk中,然后将APK从SD卡复制到PC
  • 使用apktool
  • 解码APK文件
  • 查看已解码的AndroidManifest.xml文件,可以了解您要启动的活动
  • 查看.smali文件将告诉您使用哪些额外参数将帐户名称传递给活动

可以为Seesmic,TweetDeck等其他Twitter客户端做类似的事情。 但这种方法很脆弱而且很脆弱!

  • 它依赖于设备上安装的官方Twitter应用
  • 官方应用程序的内部工作方式可以并且将在不同版本之间进行更改,并且更改将破坏您的代码

以下是两种选择:

  • 将用户引导至Twitter的移动网站,只需打开移动浏览器,例如“http://mobile.twitter.com/cocacola”
  • 如果您想要很好地控制推文流的外观,请从您的活动中加载JSON格式的推文,并自行显示。通过这种方式,您可以完全控制它们的外观,但不会像移动网站方法那样免费获得每条推文上的“回复”,“转推”等功能