我试图做出一个意图,比如调用意图
Intent skype = new Intent("android.intent.action.VIEW");
skype.setData(Uri.parse("skype:" + "user_name" + "?message=ddd"));
startActivity(skype);
它没有用。
我试图做出一个意图,比如调用意图
Intent skype = new Intent("android.intent.action.VIEW");
skype.setData(Uri.parse("skype:" + "user_name" + "?message=ddd"));
startActivity(skype);
它没有用。
官方 Android SDK 以及 Skype URI 的问题是它们不允许共享预定义的消息。您可以只打开与用户列表的聊天(或清空以创建新用户)。如果你想明确地与 Skype 共享一些文本,你可以尝试使用带有 Skype 包名的系统 Intents(记得检查这个包名是否已安装,否则 startActivity 调用会导致你的应用程序崩溃):
val SKYPE_PACKAGE_NAME = "com.skype.raider"
fun shareSkype(context: Context, message: String) {
if (!isAppInstalled(context, SKYPE_PACKAGE_NAME)) {
openAppInGooglePlay(context, SKYPE_PACKAGE_NAME)
return
}
val intent = context.packageManager.getLaunchIntentForPackage(SKYPE_PACKAGE_NAME)
intent.action = Intent.ACTION_SEND
intent.putExtra(Intent.EXTRA_TEXT, message)
intent.type = "text/plain"
context.startActivity(intent)
}
fun isAppInstalled(context: Context, packageName: String): Boolean {
val packageManager = context.packageManager
try {
packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)
} catch (e: PackageManager.NameNotFoundException) {
return false
}
return true
}
如果 Skype 或其他 Android 消息应用程序没有公开可用的 Intent,则在它们可用之前无法这样做。
但是,您可以尝试找到 Skype 用来在您的应用程序中调用的代理服务,作为发送消息的一种方式。
http://developer.skype.com/skype-uris/reference#uriChats
注意:
注意事项:
可选主题参数仅适用于多聊天。
主题参数值中的特殊字符——特别是空格——必须被转义。
Mac OS X:忽略任何主题参数。
iOS:不支持。
Android:仅识别初始参与者;不支持多人聊天。
Android 文档 - http://developer.skype.com/skype-uris/skype-uri-tutorial-android
/**
* 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 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;
}