How to send a Intent with telegram

前端 未结 4 1131
鱼传尺愫
鱼传尺愫 2020-12-03 01:55

I am trying to create a class in java which manages different social sharing apps. The class is based on android intents.

but when I try to execute Telegram intent,

4条回答
  •  天涯浪人
    2020-12-03 02:05

    All Android app have an unique ID, market ID. If you look into Google Play or google search market://details?id=org.telegram, It send you to

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

    If you send the intent with:

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

    It will work.

    If you prefer a little bit complex system I recommend you to use:

    /**
         * 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();
            }
        }
    

    And check if is installed with:

    /**
             * 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;
                }
            }
    

提交回复
热议问题