我正在制作一个可以在单击按钮时写入Firebase数据库的应用程序。 该应用程序可以在模拟器上运行,但不能在我的物理设备上运行。 该应用程序上周运行良好,但今天开始出现错误。 这是主要的活动代码:
public class MainActivity extends AppCompatActivity {
private Firebase fled1;
Button on;
Button off;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
on= findViewById(R.id.on);
off= findViewById(R.id.off);
on.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference fled1 = FirebaseDatabase.getInstance().getReferenceFromUrl("https://testproject-tb.firebaseio.com/");
DatabaseReference fled1Child = fled1.child("Button1");
fled1Child.setValue("1");
}
});
off.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference fled1 = FirebaseDatabase.getInstance().getReferenceFromUrl("https://testproject-tb.firebaseio.com/");
DatabaseReference fled1Child = fled1.child("Button1");
fled1Child.setValue("0");
}
});
}
这是我的清单文件,我已添加了所有必需的权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lalitahuja.iotbutton">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="com.example.lalitahuja.iotbutton.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这是构建Gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.lalitahuja.iotbutton"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7'
implementation 'com.google.firebase:firebase-auth:16.2.0'
implementation 'com.firebase:firebase-client-android:2.5.2'
}
apply plugin: 'com.google.gms.google-services'
我得到的错误:
E / FirebaseInstanceId:令牌检索失败:SERVICE_NOT_AVAILABLE
编辑:我尝试了Internet上现有的解决方案,但没有一个起作用。
答案 0 :(得分:5)
自从我最近遇到这个问题以来,让我列出它为什么会出现以及如何解决。
我已经将一个应用程序(称为app1)添加到项目中。现在,在清理应用程序时,我不想删除该应用程序,因此我在同一项目中添加了具有不同软件包的另一个应用程序(我们称其为newAPP。)
发生了问题,因为我将旧的google-services.json文件(对于app1)复制到了新的android应用中。那是一个错误。
一旦我在firebase控制台中添加了newAPP并在newAPP代码库中下载了google-services.json文件,我仍然不断收到此错误。
我收到此错误,因为构建文件(由Studio自动生成)仍然具有旧的app-id和client-id等。
所以要修复它,我必须执行以下操作:
请确保将“ app \ build \ Generated \ res \ google-services \ debug \ values \ values.xml”(由Studio build生成)中的应用程序ID与Firebase上与您的应用程序ID相对应的安慰。祝你好运!
答案 1 :(得分:0)
我曾经遇到过这个问题。您可以尝试的几件事。
尝试重新启动设备
检查是否启用了Google Play服务和Play商店。
有时,Google Play服务或Play商店会受到蜂窝数据的限制。为了解决这个问题,我做了以下工作:应用程序数据使用-> Google服务->关闭“限制蜂窝数据访问”选项。