我正在尝试从我的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);
}
}
答案 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);
}
}