Sinch服务似乎不是从Android Studio和Parse.com(Android消息传递教程)开始的

Sinch服务似乎不是从Android Studio和Parse.com(Android消息传递教程)开始的,android,service,android-studio,instant-messaging,sinch,Android,Service,Android Studio,Instant Messaging,Sinch,我将学习本教程: Github教程: 我遇到的问题是,这项服务似乎根本没有启动。我已经检查了代码,无法发现任何看起来错误的地方(但我还是一个初学者,哈哈) 在MenuFragment3类中,我没有收到任何广播,因此progressDialog一直在旋转。我还检查了一个服务是否同时在多个模拟器和真实设备上运行,正如我所说的,该服务似乎从未启动,我真的不知道为什么 如果你还需要什么,请告诉我,谢谢你的帮助 首先,当用户在此处登录时,我启动服务: serviceIntent = new Intent(

我将学习本教程:

Github教程:

我遇到的问题是,这项服务似乎根本没有启动。我已经检查了代码,无法发现任何看起来错误的地方(但我还是一个初学者,哈哈)

在MenuFragment3类中,我没有收到任何广播,因此progressDialog一直在旋转。我还检查了一个服务是否同时在多个模拟器和真实设备上运行,正如我所说的,该服务似乎从未启动,我真的不知道为什么

如果你还需要什么,请告诉我,谢谢你的帮助

首先,当用户在此处登录时,我启动服务:

serviceIntent = new Intent(getApplicationContext(), MessageService.class);
startService(serviceIntent);
这是舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yupo.dominic.yupo" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".UserAuth"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Login"
        android:label="@string/title_login_area">
    </activity>
    <activity
        android:name=".StudentLogged"
        android:label="@string/title_student_area">
    </activity>
    <activity
        android:name=".Register"
        android:label="@string/register">
    </activity>
    <activity
        android:name=".LectureLogged"
        android:label="@string/title_lecture_area">
    </activity>
    <service android:name=".MessageService">

    </service>
</application>

</manifest>
这里是本教程中ListUsersActivity的我的版本(对我来说,它被称为MenuFragment3,它是从StudentLogged或讲师Logged活动中调用的滑动菜单的一部分)

package com.yupo.dominic.yupo;
导入android.app.ProgressDialog;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.support.v4.app.Fragment;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v4.content.LocalBroadcastManager;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
导入com.parse.FindCallback;
导入com.parse.ParseQuery;
导入com.parse.ParseUser;
导入java.util.ArrayList;
导入java.util.List;
公共类MenuFragment3扩展了片段{
视图根视图;
数组列表名称;
ParseUser当前用户;
字符串currentUserId;
列表视图用户列表视图;
ArrayAdapter名称ArrayAdapter;
进行对话进行对话;
广播接收机;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
currentUser=ParseUser.getCurrentUser();
if(currentUser.getString(“type”).equalsIgnoreCase(“讲师”))
{
rootview=充气机。充气(R.layout.menu3\u 2\u布局,容器,错误);
}
其他的
{
rootview=充气机。充气(R.layout.menu3\u布局,容器,假);
}
progressDialog=新建progressDialog(getActivity());
progressDialog.setTitle(“加载”);
progressDialog.setMessage(“请稍候…”);
progressDialog.show();
接收器=新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
Toast.makeText(getActivity(),“广播已接收”,Toast.LENGTH_SHORT.show();
布尔成功=intent.getBooleanExtra(“成功”,false);
progressDialog.disclose();
//如果是Sinch,则显示祝酒词
//服务无法启动
如果(!成功){
Toast.makeText(getActivity(),“消息服务启动失败”,Toast.LENGTH_LONG.show();
}
}
};
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(receiver,new IntentFilter(“com.yupo.dominic.yupo.StudentLogged”);
currentUserId=ParseUser.getCurrentUser().getObjectId();
名称=新的ArrayList();
ParseQuery=ParseUser.getQuery();
whereNotEqualTo(“objectId”,currentUserId);
findInBackground(新的FindCallback(){
public void done(List userList,com.parse.parsee){
如果(e==null){

对于(int i=0;i您正在尝试使用Sinch密钥和密码初始化解析。此外,您应该在应用程序的onCreate方法中初始化解析。请尝试:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    currentUserId = ParseUser.getCurrentUser().getObjectId();

    if (currentUserId != null && !isSinchClientStarted()) {
        startSinchClient(currentUserId);
    }

    broadcaster = LocalBroadcastManager.getInstance(this);

    return super.onStartCommand(intent, flags, startId);
}

如果您在下面使用我的答案,请您将其标记为已接受?谢谢!
package com.yupo.dominic.yupo;

import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.content.LocalBroadcastManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.parse.FindCallback;
import com.parse.ParseQuery;
import com.parse.ParseUser;

import java.util.ArrayList;
import java.util.List;

public class MenuFragment3 extends Fragment{

View rootview;
ArrayList<String> names;
ParseUser currentUser;
String currentUserId;
ListView usersListView;
ArrayAdapter<String> namesArrayAdapter;
ProgressDialog progressDialog;
BroadcastReceiver receiver;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    currentUser = ParseUser.getCurrentUser();

    if(currentUser.getString("type").equalsIgnoreCase("Lecturer"))
    {
        rootview = inflater.inflate(R.layout.menu3_2_layout, container, false);
    }
    else
    {
        rootview = inflater.inflate(R.layout.menu3_layout, container, false);
    }

    progressDialog = new ProgressDialog(getActivity());
    progressDialog.setTitle("Loading");
    progressDialog.setMessage("Please wait...");
    progressDialog.show();

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(getActivity(), "broadcast received", Toast.LENGTH_SHORT).show();

            Boolean success = intent.getBooleanExtra("success", false);
            progressDialog.dismiss();
            //show a toast message if the Sinch
            //service failed to start
            if (!success) {
                Toast.makeText(getActivity(), "Messaging service failed to start", Toast.LENGTH_LONG).show();
            }
        }
    };
    LocalBroadcastManager.getInstance(getActivity()).registerReceiver(receiver, new IntentFilter("com.yupo.dominic.yupo.StudentLogged"));


    currentUserId = ParseUser.getCurrentUser().getObjectId();
    names = new ArrayList<String>();
    ParseQuery<ParseUser> query = ParseUser.getQuery();

    query.whereNotEqualTo("objectId", currentUserId);
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(List<ParseUser> userList, com.parse.ParseException e) {
            if (e == null) {
                for (int i=0; i<userList.size(); i++) {
                    names.add(userList.get(i).getUsername().toString());
                }
                usersListView = (ListView)rootview.findViewById(R.id.usersListView);
                namesArrayAdapter =
                        new ArrayAdapter<String>(getActivity(),
                                R.layout.user_list_item, names);
                usersListView.setAdapter(namesArrayAdapter);
                usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> a, View v, int i, long l) {
                        openConversation(names, i);
                    }
                });
            } else {
                Toast.makeText(getActivity(),
                        "Error loading user list",
                        Toast.LENGTH_LONG).show();
            }
        }
    });

    return rootview;
}

public void openConversation(ArrayList<String> names, int pos) {
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("username", names.get(pos));
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(List<ParseUser> user, com.parse.ParseException e) {
            if (e == null) {
                //Intent intent = new Intent(getActivity(), MessagingActivity.class);
                //intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                //startActivity(intent);

                Toast.makeText(getActivity(),
                        "working",
                        Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getActivity(),
                        "Error finding that user",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    currentUserId = ParseUser.getCurrentUser().getObjectId();

    if (currentUserId != null && !isSinchClientStarted()) {
        startSinchClient(currentUserId);
    }

    broadcaster = LocalBroadcastManager.getInstance(this);

    return super.onStartCommand(intent, flags, startId);
}