如何用电报发送意图

时间:2014-02-07 11:55:41

标签: android android-intent

我正在尝试在java中创建一个管理不同社交共享应用程序的类。该类基于android意图。

但是当我尝试执行Telegram intent时,它找不到该应用程序。

这里我把我写的代码:

public void shareTelegram(String message)
{
            Intent waIntent = new Intent(Intent.ACTION_SEND);
            waIntent.setType("text/plain");
            waIntent.setPackage("com.telegram");
            if (waIntent != null) {
                waIntent.putExtra(Intent.EXTRA_TEXT, message);//
                _androidActivity.startActivity(Intent.createChooser(waIntent, "Share with"));
            } 
            else 
            {
                Toast.makeText(_androidActivity.getApplicationContext(), "Telegram is not installed", Toast.LENGTH_SHORT).show();
            }

}

我在哪里可以找到包裹名称? 提前谢谢。

3 个答案:

答案 0 :(得分:30)

所有Android应用都有唯一的ID,市场ID。如果您查看Google Play或Google搜索市场://详情?id = org.telegram,它会将您发送给

https://play.google.com/store/apps/details?id=org.telegram.messenger

如果您发送意图:

waIntent.setPackage("org.telegram.messenger");

它会起作用。

如果您更喜欢有点复杂的系统,我建议您使用:

/**
     * Intent to send a telegram message
     * @param msg
     */
    void intentMessageTelegram(String msg)
    {
        final String appName = "org.telegram.messenger";
        final boolean isAppInstalled = isAppAvailable(mUIActivity.getApplicationContext(), appName);
        if (isAppInstalled) 
        {
            Intent myIntent = new Intent(Intent.ACTION_SEND);
            myIntent.setType("text/plain");
            myIntent.setPackage(appName);
            myIntent.putExtra(Intent.EXTRA_TEXT, msg);//
            mUIActivity.startActivity(Intent.createChooser(myIntent, "Share with"));
        } 
        else 
        {
            Toast.makeText(mUIActivity, "Telegram not Installed", Toast.LENGTH_SHORT).show();
        }
    }

并检查是否安装了:

/**
         * Indicates whether the specified app ins installed and can used as an intent. This
         * method checks the package manager for installed packages that can
         * respond to an intent with the specified app. If no suitable package is
         * found, this method returns false.
         *
         * @param context The application's environment.
         * @param appName The name of the package you want to check
         *
         * @return True if app is installed
         */
        public static boolean isAppAvailable(Context context, String appName) 
        {
            PackageManager pm = context.getPackageManager();
            try 
            {
                pm.getPackageInfo(appName, PackageManager.GET_ACTIVITIES);
                return true;
            } 
            catch (NameNotFoundException e) 
            {
                return false;
            }
        }

答案 1 :(得分:2)

> **//open telegram directly without intent to specify id.**


 Intent telegram = new Intent(android.content.Intent.ACTION_SEND);
     telegram.setData(Uri.parse("http://telegram.me/myId"));
     telegram.setPackage("org.telegram.messenger");
     Test.this.startActivity(Intent.createChooser(telegram, "Share with"));

答案 2 :(得分:0)

  void intentMessageTelegram(String msg)
    {
        final String appName = "org.telegram.messenger";
        final boolean isAppInstalled = isAppAvailable(this.getApplicationContext(), appName);
        if (isAppInstalled)
        {
            Intent myIntent = new Intent(Intent.ACTION_SEND);
            myIntent.setType("text/plain");
            myIntent.setPackage(appName);
            myIntent.putExtra(Intent.EXTRA_TEXT, msg);//
            this.startActivity(Intent.createChooser(myIntent, "Share with"));
        }
        else
        {
            Toast.makeText(this, "Telegram not Installed", Toast.LENGTH_SHORT).show();
        }
    }
    public static boolean isAppAvailable(Context context, String appName)
    {
        PackageManager pm = context.getPackageManager();
        try
        {
            pm.getPackageInfo(appName, PackageManager.GET_ACTIVITIES);
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }

  btnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                intentMessageTelegram("Hi");
            }
        });
相关问题