【问题标题】:android api 23 startActivity errorandroid api 23 startActivity 错误
【发布时间】:2016-12-26 15:40:34
【问题描述】:

以下示例存在构建错误:

public class BootReceiver extends BroadcastReceiver {

public BootReceiver() {
}

@Override
public void onReceive(final Context mContext, Intent intent) {
    if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)){
        final Intent l = new Intent();
        l.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        l.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        l.setComponent(new ComponentName(this.getClass().getName(), MainActivity.class.getName()));
        mContext.getApplicationContext().startActivity(l);
    }
}
}

广播接收器在 AndroidManifest.xml 中的标签内声明如下:

    <receiver
        android:name=".BootReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter >
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

build.gradle 是这样的:

应用插件:'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion '25.0.2'
defaultConfig {
    minSdkVersion 23
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    }
    debug {

    }
}
productFlavors {
}
}

dependencies {
    compile 'com.android.support:leanback-v17:23.2.1'
    compile 'com.android.support:preference-leanback-v17:23.2.1'
}

但在干净的项目之后,任何尝试都会跟随:

Error:(38, 37) error: cannot find symbol method startActivity(Intent)

使用 Android Studio 最新的稳定版本。 尝试重启工作站和 Studio(包括缓存失效),重新安装平台,切换到 beta Studio 版本,但结果相同。

对于这个问题的任何建议将不胜感激。以前从未见过这样的东西。

【问题讨论】:

  • 你为什么使用mContext.getApplicationContext().startActivity(l);?插入你的mContext.startActivity(l);
  • 因为我首先尝试mContext.startActivity(l);,但错误与结果相同。所以我开始相信魔法并尝试使用一些“魔法尘埃”来解决我的问题。遗憾的是没有运气。

标签: android broadcastreceiver start-activity


【解决方案1】:

保持冷静并查看所有项目代码。我在本地项目的文件树中找到了 android.content.Context 类的副本。并且没有startActivity 方法。

添加了重复项以访问隐藏的/仅系统的类字段/方法,而无需 Java 反射。非常非常抱歉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    相关资源
    最近更新 更多