从Onclick调用方法?

时间:2014-06-02 14:54:06

标签: android onclick skype

我正在尝试从我的App打开Skype聊天屏幕。如果未安装该应用程序,它将引导您进入Playstore。我在这个链接中使用它

http://developer.skype.com/skype-uris/skype-uri-tutorial-android

现在,只要单击fb按钮,就必须调用initiateSkypeUri()方法。我在下面的代码中尝试过。我不知道我是否正确地调用了它。所以我需要一些指导?

   public class About extends MainActivity implements android.view.View.OnClickListener
        {
            Button fb;
            static String TAG = "remote it";
    String mySkypeUri = "skype:aruzev?chat";

            @Override
            protected void onCreate(Bundle savedInstanceState)
            {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View contentView = inflater.inflate(R.layout.about, null, false);
                mDrawer.addView(contentView, 0);
                fb = (Button) contentView.findViewById(R.id.fb);
                fb.setOnClickListener(this);
            }



            public void onClick(View v)
            { // TODO Auto-generated method stub
                if (v.getId() == R.id.fb)
                {
              startActivity(initiateSkypeUri(getApplicationContext(), mySkypeUri));
                }
            }
    public void initiateSkypeUri(Context myContext, String mySkypeUri)
        {

            // Make sure the Skype for Android client is installed
            if (!isSkypeClientInstalled(myContext))
            {
                goToMarket(myContext);
                return;
            }

            // Create the Intent from our Skype URI
            Uri skypeUri = Uri.parse(mySkypeUri);
            Intent myIntent = new Intent(Intent.ACTION_VIEW, skypeUri);

            // Restrict the Intent to being handled by the Skype for Android client
            // only
            myIntent.setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"));
            myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            // Initiate the Intent. It should never fail since we've already
            // established the
            // presence of its handler (although there is an extremely minute window
            // where that
            // handler can go away...)
            myContext.startActivity(myIntent);

            return;
        }

        public void goToMarket(Context myContext)
        {
            Uri marketUri = Uri.parse("market://details?id=com.skype.raider");
            Intent myIntent = new Intent(Intent.ACTION_VIEW, marketUri);
            myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            myContext.startActivity(myIntent);

            return;
        }

        public boolean isSkypeClientInstalled(Context myContext)
        {
            PackageManager myPackageMgr = myContext.getPackageManager();
            try
            {
                myPackageMgr.getPackageInfo("com.skype.raider", PackageManager.GET_ACTIVITIES);
            }
            catch (PackageManager.NameNotFoundException e)
            {
                return (false);
            }
            return (true);
        }

        }

1 个答案:

答案 0 :(得分:0)

您将void传递给startActivity,但它需要一个intent。 我想你最好调用initiateSkypeUri(),你现在调用startActivity。

这样的事情:

   public void onClick(View v){
    switch(v.getId()){
    case: R.id.fb
        initiateSkypeUri(getApplicationContext(), mySkypeUri);
        break;
    }             
}   



public void initiateSkypeUri(Context myContext, String mySkypeUri)
    {

        // Make sure the Skype for Android client is installed
        if (!isSkypeClientInstalled(myContext))
        {
            goToMarket(myContext);

        }else{
            // Create the Intent from our Skype URI
            Uri skypeUri = Uri.parse(mySkypeUri);
            Intent myIntent = new Intent(Intent.ACTION_VIEW, skypeUri);

            // Restrict the Intent to being handled by the Skype for Android client
            // only
            myIntent.setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"));
            myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            // Initiate the Intent. It should never fail since we've already
            // established the
            // presence of its handler (although there is an extremely minute window
            // where that
            // handler can go away...)
            startActivity(myIntent);
        }

    }