2017-01-09 4 views
0

У меня есть Skype и Skype для бизнеса, установленные на устройстве Android. Я хочу программно сделать вызов VOIP со Skype для бизнеса. Я создаю намерение так:Намерение для Skype для звонка по телефону

Intent intent = new Intent("android.intent.action.VIEW"); 
intent.setData(Uri.parse("skype:" + somePhoneNumber)); 
context.startActivity(intent); 

Когда я начинаю намерение сделать вызов, появляется всплывающее окно:

Завершить действие с помощью:
Скайпа
Телефона
Только После Всегда

Skype для бизнеса нет.

Я попробовал followoing, но он выходит из строя (IllegalArgument)

intent.setData(Uri.parse("skype for business:" + somePhoneNumber)); 

Что я могу сделать?

ответ

1

Вот как я это сделал:

strings.xml

<!-- skype --> 
<string name="skype_activity_title">Skype for Business call</string> 
<string name="make_skype_call">Make Skype Call</string> 
<string name="video_call">Video call</string> 
<string name="permission_rationale">"Contacts permissions are needed for providing email completions."</string> 
<string name="skypeEmailAddress">skypeEmailAddress</string> 

Рез/расположение .skype.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/skype_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="20dp"> 

    <EditText 
     android:id="@+id/skypeEmailAddress" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="20dp" 
     android:hint="[email protected]" 
     android:inputType="textEmailAddress" 
     android:textSize="30sp"/> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <Button 
      android:id="@+id/skype_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="20dp" 
      android:textSize="30sp" 
      android:text="@string/make_skype_call" /> 

     <CheckBox 
      android:id="@+id/videoCheck" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/video_call" 
      android:textSize="30sp"/> 

    </LinearLayout> 
</LinearLayout> 

AndroidManifest.xml

<!-- Skype Activity --> 
<activity 
    android:name="com.somwhere.myproject.SkypeActivity" 
    android:label="@string/skype_activity_title" 
    android:theme="@style/Theme.AppCompat"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".MainActivity"/> 
</activity> 

SkypeActivity.java

package com.somwhere.myproject; 

import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 

public class SkypeActivity extends AppCompatActivity { 

    private static final String TAG = "SkypeActivity"; 
    private static final int REQUEST_READ_CONTACTS = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent = getIntent(); 
     final String skypeEmailAddress = intent.getStringExtra(getResources().getString(R.string.skypeEmailAddress)); 

     setContentView(R.layout.skype); 

     final EditText skypeEmailAddressText = (EditText) findViewById(R.id.skypeEmailAddress); 
     skypeEmailAddressText.setText(skypeEmailAddress); 

     Button skypeButton = (Button) findViewById(R.id.skype_button); 

     Log.i(TAG, "skypeEmailAddress: " + skypeEmailAddress); 
     final CheckBox videoCall = (CheckBox) findViewById(R.id.videoCheck); 
     skypeButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       String uriString = "ms-sfb://call?id=" + skypeEmailAddress; 
       if (videoCall.isChecked()) { 
        uriString += "&video=true"; 
       } 
       Uri uri = Uri.parse(uriString); 
       Intent callIntent = new Intent(Intent.ACTION_VIEW, uri); 
       startActivity(callIntent); 
      } 
     }); 

    } 
} 

MainActivity.java (на нажатие кнопки возможно)

Intent intent = new Intent(activity, SkypeActivity.class); 
intent.putExtra(activity.getResources().getString(R.string.skypeEmailAddress), "[email protected]"); 
activity.startActivity(intent); 
0

Как уже упоминалось в MSDN docs, использовать это, чтобы позвонить Skype для бизнеса Intent:

Intent intent = new Intent("android.intent.action.VIEW"); 
intent.setData(Uri.parse("ms-sfb://call?id=" + somePhoneNumber)); 
context.startActivity(intent); 
+0

С этими словами я получаю: * ActivityNotFoundException: Нет активности не обнаружено обрабатывать Intent {act = android.intent.action.View dat = ms-sfb: // call? id = (212) 555-1212} * –

+0

Вы пробовали форматировать параметр id, например, пример? ' "Мс-SFB: // идентификатор вызова = + 1425-555-1234?"' –

 Смежные вопросы

  • Нет связанных вопросов^_^