我被困在试图围绕解析信息的parse.com概念。当用户名在我的parse.com数据库中时,我的问题是尝试打开网页。例。用户在登录屏幕上输入“john”作为用户名和“gan”作为密码。如果找到用户名,我想打开一个网页,请说google.com。我认为我的概念是正确的,但我认为我的逻辑错了。有人可以帮忙吗?
public class Login extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(layout.activity_login);
final EditText username = (EditText) this.findViewById(id.userloginname);
final EditText password = (EditText) this.findViewById(id.userpassword);
TextView neighbourView = new TextView(this);
Button button_test;
button_test = (Button) this.findViewById(id.btnLogin);
button_test.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final String usersname = username.getText().toString();
final String passwoord = password.getText().toString();
//ParseQuery<ParseObject> query = ParseQuery.getQuery("Parking");
ParseUser.logInInBackground(usersname, passwoord, new LogInCallback() {
public void done(ParseUser User, com.parse.ParseException e) {
if (User != null) {
// user name is in the database
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
}
else{
Toast.makeText(getApplicationContext(), "user name does not exists", Toast.LENGTH_LONG).show();
}
}
});
// return false;
}
});
}
我的XML
<!-- Username Label -->
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/username"/>
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginBottom="20dip"
android:singleLine="true"
android:id="@+id/userloginname"
android:inputType="text" />
<!-- Password Label -->
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/password"/>
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:singleLine="true"
android:password="true"
android:inputType="textPassword"
android:id="@+id/userpassword" />
<!-- Login button -->
<Button android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/loginButton"/>
答案 0 :(得分:0)
您的代码应该可以使用,我认为是权限问题,或者您忘记复制这些jar。
要检查的一些事项:
build.gradle
dependencies {
compile fileTree(dir: 'libs', include: 'Parse-*.jar')
compile 'com.parse.bolts:bolts-android:1.+'
}
在AndroidManifest.xml中添加此权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
然后在onCreate()中你需要初始化解析
Parse.enableLocalDatastore(this);
Parse.initialize(this, XXXX,XXXX);
最好的方法是使用自定义Application类
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Parse.enableLocalDatastore(this);
Parse.initialize(this, "XXXXXX", "XXXXXX");
}
}
然后在AndroidManifest.xml中
<application
android:name=".MyAplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<--!activities, etc-->
</application>
答案 1 :(得分:0)
如果它是新用户,您必须先登录,然后您可以使用您的代码登录,如果您已登录新记录,不将添加到数据库,它会&#39; ll识别用户并登录。
ParseUser user = new ParseUser();
user.setUsername(username);
user.setPassword(password);
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if( e != null){
ParseUser.logInInBackground(usersname, passwoord, new LogInCallback() {
public void done(ParseUser User, com.parse.ParseException e) {
if (User != null) {
// user name is in the database
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
}
else{
Toast.makeText(getApplicationContext(), "user name does not exists", Toast.LENGTH_LONG).show();
}
}
});
}
}
});
希望这有帮助