API Dropbox Core не работает. Я не хочу жестко закодировать ключ приложения и секрет?
Я новичок. В моем приложении есть два вида деятельности: вход в систему и основной вид деятельности. Я хочу ввести ключ приложения и секрет приложения в процессе входа в систему, но мое приложение не работает. Это крушение. Я хочу начать процесс аутентификации, когда нажимаю кнопку.
public class login_activity extends AppCompatActivity {
public String APP_kEY ;
public String APP_SECRET;
public String accessToken;
EditText app_key_view;
EditText App_secret_view;
Button dropbox;
public DropboxAPI<AndroidAuthSession> mDBApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences pref = getSharedPreferences("login",MODE_PRIVATE);
APP_kEY = pref.getString("appkey",null);
APP_SECRET = pref.getString("appsecret",null);
accessToken = pref.getString("access",null);
if (accessToken != null){
AppKeyPair appkeys = new AppKeyPair(APP_kEY,APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appkeys);
session.setOAuth2AccessToken(accessToken);
Intent i = new Intent(login_activity.this,MainActivity.class);
startActivity(i);
finish();
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_activity);
app_key_view=(EditText)findViewById(R.id.app_key_text);
App_secret_view=(EditText)findViewById(R.id.app_secret_text);
dropbox = (Button)findViewById(R.id.link_dropbox);
//////////////////////////////////////////////////////////////
dropbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
APP_kEY = app_key_view.getText().toString();
APP_SECRET = App_secret_view.getText().toString();
AppKeyPair appKeys = new AppKeyPair(APP_kEY,APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys);
mDBApi = new DropboxAPI<>(session);
mDBApi.getSession().startOAuth2Authentication(login_activity.this);
}
});
}
@Override
protected void onResume () {
super.onResume();
if(mDBApi.getSession().authenticationSuccessful()){
try {
mDBApi.getSession().finishAuthentication();
accessToken = mDBApi.getSession().getOAuth2AccessToken();
SharedPreferences.Editor editor = getSharedPreferences("login",MODE_PRIVATE).edit();
editor.putString("appkey",APP_kEY);
editor.putString("appsecret",APP_SECRET);
editor.putString("access",accessToken);
editor.commit();
Intent i = new Intent(login_activity.this,MainActivity.class);
startActivity(i);
finish();
}
catch (IllegalStateException e){
Log.i("DbAuthLog", "Error authenticationg", e);
}
}
}
манифест Android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ayzaz.timescopev1.timescope" >
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".login_activity"
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=".MainActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.dropbox.client2.android.AuthActivity"
android:launchMode="singleTask"
android:configChanges="orientation|keyboard">
<intent-filter>
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-5400mvbvj5384st" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
LogCat
1633-1633 / com.example.ayzaz.timescopev1.timescope I / art ﹕ Позднее включение -Xcheck: jni 09-11 20: 59: 32.437
1633-1633 / com.example.ayzaz.timescopev1.timescope D / AndroidRuntime ﹕ Выключение виртуальной машины --------- начало сбоя 09-11 20: 59: 32.438 1633-1633 / com.example.ayzaz. timescopev1.timescope E / AndroidRuntime ﹕ ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.ayzaz.timescopev1.timescope, PID: 1633 java.lang.RuntimeException: Невозможно возобновить активность {com.example.ayzaz.timescopev1.timescope / com.example .ayzaz.timescopev1.timescope.login_activity}: java.lang.NullPointerException: попытка вызвать виртуальный метод 'com.dropbox.client2.session.Session com.dropbox.client2.DropboxAPI.getSession ()' для ссылки на пустой объект в Android .app.ActivityThread.performResumeActivity (ActivityThread.java:2986) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3017) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2392) в android.app.Activity. доступ к $ 800 (ActivityThread.java:151) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1303) на android.os.Han dler.dispatchMessage (Handler.java:102) в android.os.Looper.loop (Looper.java:135) в android.app.ActivityThread.main (ActivityThread.java:5254) в java.lang.reflect.Method.invoke (Собственный метод) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) в com.android.internal.os .ZygoteInit.main (ZygoteInit.java:698) Вызывается: java.lang.NullPointerException: попытка вызвать виртуальный метод 'com.dropbox.client2.session.Session com.dropbox.client2.DropboxAPI.getSession ()' для нулевого значения ссылка на объект в com.example.ayzaz.timescopev1.timescope.login_activity.onResume (login_activity.java:77) в android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1257) в android.app.Activity.performResume (Activity.java) : 6076) в android.app.ActivityThread.performResumeActivity (ActivityThread.java:2975) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3017) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2392) на android.app.ActivityThread.access $ 800 (ActivityThread.java:151) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1303) на android .os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5254) на java.lang.reflect. Method.invoke (собственный метод) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) в com.android. internal.os.ZygoteInit.main (ZygoteInit.java:698) 09-11 20: 59: 43.201 1633-1633 / com.example.ayzaz.timescopev1.timescope I / Process ﹕ Отправка сигнала. PID: 1633 SIG: 9