应用程序转到“允许dropbox”屏幕而不是onCreate

时间:2016-03-25 18:04:02

标签: android dropbox

解决

完全重新安装应用程序显然是不够的。我重新启动了手机一次,应用程序又回到了发生这种情况之前的状态。

原帖

我正在制作这个与Dropbox集成的应用程序,我最近遇到了一些问题。

在几个月内,它的工作应该是应有的。它首先安装了应用程序时要求允许在手机上使用登录的保管箱帐户,之后所有与保管箱相关的内容都是在后台进行的。

最近我对我的代码进行了一些小改动,这使得应用程序完全失控,只是不断重新加载“允许保管箱”屏幕而你无法与应用程序进行交互。所以我很自然地将改变恢复到以前的状态,但问题并没有消失。

问题

每当我启动应用程序时,它会直接进入“允许保管箱”屏幕,当我按下允许或拒绝时,它会关闭应用程序并返回到我的主屏幕。

我已经注释掉了与dropbox相关的每一行代码,完全删除并重新安装了手机上的应用程序,并在Android Studio中完成了大量的清理和重建以及所有这些问题,但问题仍然存在。

所以现在当我启动应用程序时,它会进入“允许保管箱”屏幕,但由于所有代码都被注释掉了,它只是说应用程序设置不正确而我所能做的就是再次关闭它。

清单:          

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/app_icon"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.korpasjaervii.timereporter.MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </activity>
    <activity
        android:name="com.korpasjaervii.timereporter.CompilationActivity"
        android:parentActivityName="com.korpasjaervii.timereporter.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.korpasjaervii.timereporter.MainActivity"/>
    </activity>
    <activity
        android:name="com.korpasjaervii.timereporter.SettingsActivity"
        android:label="@string/title_activity_settings"
        android:parentActivityName="com.korpasjaervii.timereporter.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.korpasjaervii.timereporter.MainActivity" />
    </activity>
    <!--<activity
        android:name="com.dropbox.client2.android.AuthActivity"
        android:launchMode="singleTask"
        android:configChanges="orientation|keyboard">
        <intent-filter>
            <data android:scheme="db-rt97pzc7umt2krp" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>-->
    <receiver android:name=".AlarmReceiver"/>
</application>

MainActivity的onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

这显然不是真正的onCreate,但我把它减少到了这个问题仍然存在。

我还应该说logcat甚至没有注册我的应用程序已被打开。

2 个答案:

答案 0 :(得分:0)

您没有提及您的应用所针对的SDK版本,但是使用Android 6.0(又名23),权限模型已更改,您的代码必须适应在需要时请求权限并且正常失败用户没有向您提供所请求的权限。

来自docs

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
        Manifest.permission.READ_CONTACTS)) {

    // Show an expanation to the user *asynchronously* -- don't block
    // this thread waiting for the user's response! After the user
    // sees the explanation, try again to request the permission.

} else {

    // No explanation needed, we can request the permission.

    ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_CONTACTS},
            MY_PERMISSIONS_REQUEST_READ_CONTACTS);

    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
    // app-defined int constant. The callback method gets the
    // result of the request.
}

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

答案 1 :(得分:0)

当您重新启动手机时,显然会发生一些事情,当您完全重新安装该应用时,这种情况不会发生。因为我已经多次重新安装它而没有任何改变,但重新启动手机一旦解决了......