Open Phone, SMS, Email, Skype and Browser apps of Android in Unity3d

最近项目需要使用Android的一些基本功能,写插件各种悲剧,google了一下,如获至宝。Nice !

string url = String.Format("tel:{0}",phoneNumber);

string url = String.Format("sms:{0}?body={1}", numbers, message);


string url = String.Format("mailto:{0}?subject={1}&body={2}",email_address,subject,body);


Application.OpenURL(url); 

相关引用:

http://www.makebetterthings.com/iphone/open-phone-sms-email-map-and-browser-apps-in-iphone-sdk/


Here is how you can open default Phone app, SMS app, Email app, Maps app and browser app with openURL.

Open default Phone app in iPhone:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8004664411"]];

Open default SMS app in iPhone:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://466453"]];

Open default Email app in iPhone:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://devprograms@apple.com"]];

       这里注意几点,如果写Android min sdk 如果低的话他会默认继承ActionBarActivity类 ,而不是Activity。

   同时会产生一个 appcompont工程来让低版本的库来兼容运行actionbar特性。

   如果unity3d 的 子Activity 继承ActionBarActivity而不是Activity会无法启动。

// 此外 最好min sdk 是4.0 ,max sdk 也是4.0

// 因为 minsdk 低于4.0,max sdk 高于 4.0 会丢失一个主题,需要自己 手动导入

2014-9-4 Add Lauch Skype

应用除了tel  进行联系之外 ,还需要 Lauch Skype

googl之

SkyPe官网 有这么一段代码

http://msdn.microsoft.com/en-us/library/office/dn745882(v=office.15).aspx#video

http://msdn.microsoft.com/en-us/library/office/dn745884(v=office.15).aspx

/**
 * Initiate the actions encoded in the specified URI.
 */
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 because you'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;
}

实际应用了一下,发现启动不了,也不知道为什么,但是内存是启动了,只是focus没有转到skype上面。

悲剧,继续google,

http://stackoverflow.com/questions/10132556/how-to-start-a-skype-call-from-an-android-app

http://stackoverflow.com/questions/6414494/launch-skype-from-an-app-programmatically-pass-number-android/8844526#8844526

发现很多办法都大同小异,基本上都是官网的盘版。

偶然之下试了下这个办法,成功启动

http://blog.csdn.net/fhy_2008/article/details/6694219

PackageManager packageManager = getPackageManager();
Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider");
skype.setData(Uri.parse("tel:65465446"));//Uri.parse("skype:" + UserName + "?call")
startActivity(skype);
原文地址:https://www.cnblogs.com/chongxin/p/3939406.html