【问题标题】:Run Twitter Application From My Application To Open A Specific Twitter Account从我的应用程序运行 Twitter 应用程序以打开特定的 Twitter 帐户
【发布时间】:2011-09-29 16:41:58
【问题描述】:

我今天搜索了这个 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");

【问题讨论】:

    标签: android twitter


    【解决方案1】:

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

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

    • 在您的 PC 上获取官方 Twitter 应用程序的 APK。例如,您可以使用ASTRO file manager中的应用备份工具将应用打包成.apk,然后将APK从SD卡复制到PC
    • 使用apktool解码APK文件
    • 查看解码的 AndroidManifest.xml 文件会让您知道要开始哪个活动
    • 查看 .smali 文件会告诉您额外参数用于将帐户名称传递给活动的意图是什么

    其他 Twitter 客户端(如 Seesmic、TweetDeck 等)也可以做类似的事情。 但是这种方法既笨拙又脆弱!

    • 它依赖于设备上安装的官方 Twitter 应用程序
    • 官方应用程序的内部工作可以并且将会在版本之间发生变化,并且这些变化会破坏您的代码

    这里有两种选择:

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

    【讨论】:

    • 我已经完成了你写的第一个替代方案(在发布帖子之前)并且它很好,但我之后找到了上面的代码。可能我稍后会深入研究它,但暂时我正在寻找一个简单的解决方案。谢谢
    • 我已经通过另一种方式解决了这个问题,用 webview 打开我的 twitter 帐户,你只需要在 webview 的末尾添加这个,“myWebView.getSettings().setUserAgentString("blablabla" );"。
    猜你喜欢
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2013-09-02
    • 1970-01-01
    • 2022-12-17
    • 2011-06-14
    • 2011-11-08
    相关资源
    最近更新 更多