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