My application does not work when started in a physical device. It's opened with a black screen and closed suddenly.
I am new to Android Studio. I am creating a Chat Application. I am facing some Problems. Please, anyone help me to solve my problem.
My Logcat Errors
* **E/SubscriptionManagerWrapper: java.lang.NoSuchMethodException: android.telephony.SubscriptionManager.getActiveDataSubscriptionId[]
* **E/lsc_nvram: [do_mkdir] fail to mkdir [/sdcard/shading_otp]: 13[Permission denied] (do_mkdir){#65:vendor/mediatek/proprietary /hardware/mtkcam/aaa/source/isp_40/lsc_mgr/LscUtil.h}
* **E/m.android.phon: Invalid ID 0x00000000
* **E/CheckPermission: Permission Denial: can't access location pid=4760, uid=10230, des=com.android.internal.telephony.ITelephony code=69
* **E/CheckPermission: _bluetooth code = 15
* **E/FirebaseInstanceId: Failed to get FIS auth token
java.util.concurrent.ExecutionException: qju: Firebase Installations Service is unavailable. Please try again later.
at oui.p(PG:3)
at oui.k(PG:6)
at qjh.a(PG:7)
at qiw.a(Unknown Source:11)
at low.run(PG:1)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at lgj.run(PG:5)
at java.lang.Thread.run(Thread.java:919)
Caused by: qju: Firebase Installations Service is unavailable. Please try again later.
at qkh.a(PG:23)
at qjr.run(Unknown Source:15)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)* **E/FirebaseInstanceId: Topic sync or token retrieval failed on hard
failure exceptions: FIS_AUTH_ERROR. Won't retry the operation
I add these lines of Java source code in my MainActivity
to solve(Error:Fail to mkdir) this error, but it won't work
File folder = new File(Environment.getExternalStorageDirectory() + "/studio");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
if (success) {
Log.d("proto", "Path Succefully Created");
} else {
Log.d("proto", "Path Not Created");
}
AndroidManifest File
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_
STORAGE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<application
android:allowBackup="false"
android:fullBackupContent="false"
android:icon="@mipmap/ic_launcher"
android:label="My Application"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
<activity
android:name=".Navi_drawer"
android:label="@string/title_activity_navi_drawer"
android:theme="@style/Theme.MyApplication.NoActionBar"/>
<activity android:name=".SendOTP_activity"/>
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
</manifest>
MainActivity.java
package com.example.myapplication;
import android.Manifest;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ListView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.RecyclerView;
import
com.google.android.material.floatingactionbutton.FloatingActionButton;
public class MainActivity extends AppCompatActivity {
private FloatingActionButton fab1, fab2, fab3;
private RecyclerView mchatList;
private RecyclerView.Adapter mchatListAdapter;
private RecyclerView.LayoutManager mchatListLayoutMananger;
private MenuItem menuItem;
private Animation fab_open, fab_close, rotate_open_anim,
rotate_close_anim, from_bottom_anim, to_bottom_anim;
private Boolean isOpen;
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
Toolbar toolbar;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private ActionBarDrawerToggle mDrawerToggle;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
mTitle = mDrawerTitle = getTitle();
mNavigationDrawerItemTitles =
getResources().
getStringArray(R.array.navigation_drawer_items_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.nav_view);
setupToolbar();
DataModel[] drawerItem = new DataModel[3];
drawerItem[0] = new DataModel(R.drawable.ic_baseline_settings_24,
"Settings");
drawerItem[1] = new DataModel(R.drawable.ic_baseline_logout_24,
"Logout");
drawerItem[2] = new DataModel(R.drawable.ic_baseline_info_24,
"About");
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this,
R.layout.nav_header_main, drawerItem);
mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener((AdapterView.OnItemClickListener)
new DrawerItemClickListener());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setDrawerListener(mDrawerToggle);
setupDrawerToggle();
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationIcon(R.drawable.ic_baseline_dashboard_24);
fab1 = findViewById(R.id.fab1);
fab2 = findViewById(R.id.fab2);
fab3 = findViewById(R.id.fab3);
isOpen = false;
fab_open = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.fab_open);
fab_close = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.fab_close);
rotate_open_anim = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.rotate_open_anim);
rotate_close_anim = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.rotate_close_anim);
from_bottom_anim = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.from_bottom_anim);
to_bottom_anim = AnimationUtils.loadAnimation(MainActivity.this,
R.anim.to_bottom_anim);
fab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isOpen) {
fab1.setAnimation(rotate_open_anim);
fab2.setVisibility(View.INVISIBLE);
fab3.setVisibility(View.INVISIBLE);
isOpen = false;
} else {
fab1.setAnimation(rotate_close_anim);
fab2.setVisibility(View.VISIBLE);
fab3.setVisibility(View.VISIBLE);
isOpen = true;
}
}
});
fab3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(),
finduser.class));
}
});
}
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
selectItem(position);
}
}
private void selectItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new SettingsFragment();
break;
case 1:
fragment = new LogoutFragment();
break;
case 2:
fragment = new AboutFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager FragmentManager = getSupportFragmentManager();
FragmentManager.beginTransaction().
replace(R.id.mobile_navigation,fragment);
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
Log.e("MainActivity", "Error in creating fragment");
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getSupportActionBar().setTitle(mTitle);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
void setupToolbar(){
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
void setupDrawerToggle(){
mDrawerToggle = new
androidx.appcompat.app.ActionBarDrawerToggle
(this,mDrawerLayout,toolbar,
R.string.app_name, R.string.app_name);
mDrawerToggle.syncState();
}
@SuppressLint("WrongConstant")
@Override
public void onBackPressed() {
if (mDrawerLayout.isDrawerOpen(Gravity.START | Gravity.LEFT)) {
mDrawerLayout.closeDrawers();
return;
}
super.onBackPressed();
}
private void getPermission () {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS, Manifest.permission.READ_CONTACTS}, 1);
}
}
}
Navi_drawer.java
package com.example.myapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.google.android.material.navigation.NavigationView;
import static com.example.myapplication.R.id.navigation_header_container;
public class Navi_drawer extends AppCompatActivity {
private AppBarConfiguration mAppBarConfiguration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navi_drawer);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.settings, R.id.logout, R.id.about)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this,
navigation_header_container);
NavigationUI.setupActionBarWithNavController(this, navController,
mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, navigation_header_container);
return NavigationUI.navigateUp(navController, mAppBarConfiguration) || super.onSupportNavigateUp();
}
}
User contributions licensed under CC BY-SA 3.0