Putting a bitmap drawable into an array - java

So I have this image adapter class and a nav class. In the nav class I listen to the onclick of a button and then put the image into a URi. After that I convert it to a bitmap drawable. So my question is how can I put this drawable into my array in the imageadapter ?
Please note: I am passing the bitmap drawable from the nav.class to the image adapter.class.
nav class:
if(resultCode == RESULT_OK && requestCode == IMAGE_PICK){
imageuri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageuri);
d = new BitmapDrawable(getResources(), bitmap);
System.out.println("----------------------------------------");
returndrawble();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "something went wrong", Toast.LENGTH_SHORT).show();
}
}
image adapter class:
public Drawable returndrawble(){
return d;
}
}
private Integer[] images = {
R.drawable.test, R.drawable.test2, R.drawable.test3, R.drawable.test4, R.drawable.test5, R.drawable.test6, R.drawable.test7, R.drawable.test8,
};
public imageadapter(Context c) {
context = c;
//nav nav = new nav();
//image = nav.d;
}
whole nav class:
public class nav extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
private DrawerLayout drawer;
public static String email;
public static final int IMAGE_PICK= 100;
static Uri imageuri;
public static Drawable d;
#Override
protected void onCreate(Bundle savedInstanceState) {
/*Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
*/
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nav);
// get Value passed with Intent
try {
email = getIntent().getExtras().getString("email");
} catch (Exception e) {
e.printStackTrace();
}
// Toolbar
Toolbar toolbar = findViewById(R.id.toolbar);
if(toolbar == null)
System.err.println("error");
setSupportActionBar(toolbar);
if(getSupportActionBar() == null)
System.err.println("error");
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setTitle(email);
toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.hamburger));
toggle.syncState();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MessageFragment()).commit();
navigationView.setCheckedItem(R.id.nav_message);
}
}
#Override
public boolean onNavigationItemSelected(#NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_message:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MessageFragment()).commit();
Toolbar toolbar2 = (Toolbar)findViewById(R.id.toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar2.setTitle("messages");
break;
case R.id.nav_image:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ImageFragment()).commit();
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setTitle("images");
break;
case R.id.nav_notes:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new NotesFragment()).commit();
Toolbar toolbar1 = (Toolbar)findViewById(R.id.toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar1.setTitle("notes");
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
#Override
public void onBackPressed(){
if(drawer.isDrawerOpen((GravityCompat.START))){
drawer.closeDrawer(GravityCompat.START);
}
else{
super.onBackPressed();
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// check which nav item
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_toolbar, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(#NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.addimage:
Toast.makeText(getApplicationContext(), "Image added", Toast.LENGTH_SHORT).show();
openGallery();
break;
case R.id.loggout:
Toast.makeText(getApplicationContext(), "logged out", Toast.LENGTH_SHORT).show();
Intent i = new Intent(nav.this, MainActivity.class);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
private void openGallery(){
Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, IMAGE_PICK);
}
#Override
protected void onActivityResult(int requestCode, int resultCode, #Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == IMAGE_PICK){
imageuri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageuri);
d = new BitmapDrawable(getResources(), bitmap);
System.out.println("----------------------------------------");
returndrawble();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "something went wrong", Toast.LENGTH_SHORT).show();
}
}
}
public Drawable returndrawble(){
return d;
}
}

Related

Override, SuppressLint onCreate(Bundle)' is already defined in 'My project'

In my MainActivity shows like that, I am pretty developer yet, How to replace or solve it, I tried many as know but unfortunately getting error "is already defined"
In my MainActivity shows like that, I am pretty developer yet, How to replace or solve it, I tried many as know but unfortunately getting error "is already defined"
How can I solve this code to going right?
BottomNavigationView bottomNavigation;
public Button button;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loadLocale();
setContentView(R.layout.fragment_main);
//change actionbar title, if you dont change it will be according to your systems default language/english
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getResources().getString(R.string.app_name));
Button changeLang = findViewById(R.id.changeMyLang);
changeLang.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
//show AlertDialog to display list of language, one can be selected
showChangeLanguageDialog();
}
});
}
private void showChangeLanguageDialog() {
//array of languages to display in alert dialog
final String[] listItems = {"English", "O'zbek"};
final AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
mBuilder.setTitle("Choose Language...");
mBuilder.setSingleChoiceItems(listItems, -1, new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialogInterface, int i) {
if (i == 0) {
//English
setLocale("en");
recreate();
} else if (i == 1) {
//O'zbek
setLocale("uz");
recreate();
}
//dismiss alert dialog when language selected
dialogInterface.dismiss();
}
});
AlertDialog mDialog =mBuilder.create();
//show alert dialog
mDialog.show();
}
DrawerLayout drawer;
ImageView imageView1;
BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
public boolean onNavigationItemSelected(MenuItem menuItem) {
String str = "";
switch (menuItem.getItemId()) {
case R.id.navigation_home:
toolbar.setTitle(getString(R.string.app_name));
MainActivity.this.openFragment(MainFragment.newInstance(str, str, MainActivity.this));
return true;
case R.id.navigation_map:
toolbar.setTitle("Workouts");
MainActivity.this.openFragment(Fragment_Workout.newInstance(str, str));
return true;
case R.id.navigation_walk:
toolbar.setTitle("Walk & Step");
MainActivity.this.openFragment(Fragment_Walk_and_Step.newInstance(str, str));
return true;
case R.id.navigation_news:
toolbar.setTitle("Reminders");
MainActivity.this.openFragment(Fragment_Reminder.newInstance(str, str));
return true;
default:
return false;
}
}
};
NavigationView navigationView;
Toolbar toolbar;
#SuppressLint("ResourceType")
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
if (VERSION.SDK_INT > 21) {
StrictMode.setThreadPolicy(new Builder().permitAll().build());
}
setContentView((int) R.layout.activity_main);
// StepDetectionServiceHelper.startAllIfEnabled(true, MainActivity.this);
this.navigationView = (NavigationView) findViewById(R.id.nav_views);
// bottomNavigation.setItemIconTintList(null);
this.imageView1 = (ImageView) findViewById(R.id.setting);
this.imageView1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// MainActivity.this.startActivity(new Intent(MainActivity.this, Setting_Activity.class));
}
});
if (VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.addFlags(Integer.MIN_VALUE);
// window.setStatusBarColor(Color.parseColor("#EF5050"));
}
this.toolbar = initToolbar();
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
this.drawer = drawerLayout;
ActionBarDrawerToggle actionBarDrawerToggle =
new ActionBarDrawerToggle(this, drawerLayout, this.toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
this.drawer.addDrawerListener(actionBarDrawerToggle);
this.drawer.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
public void onDrawerClosed(View view) {
}
public void onDrawerOpened(View view) {
}
});
actionBarDrawerToggle.syncState();
this.navigationView.setNavigationItemSelectedListener(this);
String str = "#ffffff";
// this.toolbar.setTitleTextColor(Color.parseColor(str));
// this.toolbar.getNavigationIcon().setColorFilter(Color.parseColor(str), Mode.MULTIPLY);
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.nav_view);
this.bottomNavigation = bottomNavigationView;
bottomNavigationView.setOnNavigationItemSelectedListener(this.navigationItemSelectedListener);
String str2 = "";
// MainActivity mainActivity = null;
openFragment(MainFragment.newInstance(str2, str2, this));
}
public void openFragment(Fragment fragment) {
FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
beginTransaction.replace(R.id.nav_host_fragment, fragment);
beginTransaction.addToBackStack(null);
beginTransaction.commit();
}
public void loadFragmentworkout(Fragment fragment) {
FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
beginTransaction.replace(R.id.nav_host_fragment, fragment);
beginTransaction.addToBackStack(null);
beginTransaction.commit();
toolbar.setTitle("workout");
bottomNavigation.setSelectedItemId(R.id.navigation_map);
}
public void loadFragment_water(Fragment fragment) {
FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
beginTransaction.replace(R.id.nav_host_fragment, fragment);
beginTransaction.addToBackStack(null);
beginTransaction.commit();
toolbar.setTitle("Walk & Step");
bottomNavigation.setSelectedItemId(R.id.navigation_walk);
}
private Toolbar initToolbar() {
Toolbar toolbar2 = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar2);
return toolbar2;
}
public boolean onNavigationItemSelected(MenuItem menuItem) {
int itemId = menuItem.getItemId();
String str = "android.intent.extra.TEXT";
String str2 = "android.intent.extra.SUBJECT";
if (itemId == R.id.nav_rateus) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName())));
} else if (itemId == R.id.nav_share) {
Intent intent2 = new Intent("android.intent.action.SEND");
intent2.setType("text/plain");
StringBuilder sb3 = new StringBuilder();
sb3.append("Best Free Sog'liq Bu Sport app download now.\n Thank You!\n https://play.google.com/store/apps/details?id=" + getPackageName());
sb3.append(getApplicationContext().getPackageName());
String sb4 = sb3.toString();
intent2.putExtra(str2, "Share App");
intent2.putExtra(str, sb4);
startActivity(Intent.createChooser(intent2, "Share via"));
} else if (itemId == R.id.nav_privacy) {
Uri uri = Uri.parse("https://the-life-bloga.blogspot.com/2020/01/blog-post.html");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else if (itemId == R.id.nav_telegram) {
Uri uri = Uri.parse("https://the-life-bloga.blogspot.com/2020/01/blog-post.html");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else if (itemId == R.id.nav_instagram) {
Uri uri = Uri.parse("https://www.instagram.com/sanatismoilov_official");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else if (itemId == R.id.nav_facebook) {
Uri uri = Uri.parse("https://www.facebook.com/Nodirovich98");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else if (itemId == R.id.nav_about) {
Uri uri = Uri.parse("https://msto.me/sanat_ismoilov");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else if (itemId == R.id.nav_covid) {
Uri uri = Uri.parse("https://coronavirus.uz/uz");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
this.drawer.closeDrawer((int) GravityCompat.START);
return true;
}
public void onBackPressed() {
StepDetectionServiceHelper.stopAllIfNotRequired(this.getApplicationContext());
// StepDetectionServiceHelper.startAllIfEnabled(true, MainActivity.this);
}
public void setLocale(String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
//save data to shared preferences
SharedPreferences.Editor editor = getSharedPreferences("Setting", MODE_PRIVATE).edit();
editor.putString("My_Lang", lang);
editor.apply();
}
// load language saved in shared prefences
public void loadLocale() {
SharedPreferences prefs = getSharedPreferences("Setting", Activity.MODE_PRIVATE);
String language = prefs.getString("My_Lang", "");
setLocale(language);`
}
}```

I have created a wallpapers app using viewpager and urls of images but I am not able to set wallpapers I am placing my Urls in string

This is my mainactivity class and I am using my urls in the string. Anyone please tell me how to set wallpapers using multiple urls. I am using multiple urls to show in viewpager its working but I can't set wallpapers.
This is my main activity class.
I want to set wallpapers on floating button onclick listener
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private String[] imageUrls = new String[]{
"https://i.jj.cc/MGTTwJ7Q/Ant-Man-474b00d1-4bdc-3ea6-88a3-1702c46f061c.jpg",
"https://i.jj.cc/SKvKN1dt/fdg-min.jpg",
"https://i.jj.cc/fLSR37gW/uhd-antman18-min.jpg",
"https://i.jj.cc/Gt0hvBZF/uhd-antman7-min.jpg",
"https://i.jj.cc/ryWpMJrQ/Antman-And-The-Wasp-d4a753af-1dd1-4df2-aeb6-d39c732fd16a.jpg",
"https://i.jj.cc/RVLVnZGt/uhd-antman21-min.jpg",
"https://i.jj.cc/t4RRdGmM/Ant-man-and-the-wasp-a294bb80-e6f9-41c1-bf46-07af64e3e348.jpg",
"https://i.jj.cc/y8f1vpMY/Antman-d8033f49-b33c-4cd4-b3ca-651417df20da.jpg",
"https://i.jj.cc/yNkV5XKh/Antman-Abstract-HD-05ef2c84-e5d3-41e9-afa1-1400c315bf06.jpg",
"https://i.jj.cc/8C91VJk2/IMG-0139.jpg",
"https://i.jj.cc/Znh4CGdj/antman-70390c1f-2d63-41ea-a487-e34668167e7e.jpg",
"https://i.jj.cc/vTLM907y/antman-2fde23ba-9eac-4f11-acf7-b872b9b71121.jpg",
"https://i.jj.cc/66dBDpkP/Antman-d353b93b-5c57-4363-ad92-4a974423d2b5.jpg",
"https://i.jj.cc/rFMqcLcw/Antman-df2e8adb-b0a0-42b6-ade7-38d041349ed1.jpg",
"https://i.jj.cc/YCSkGfvc/Antman-32cb0b83-f4b6-4a24-854a-913b593c0291.jpg",
"https://i.jj.cc/zGPNnbhy/razakbaap49.jpg",
"https://i.jj.cc/tgZjDqd2/antman05-uhd.jpg"
};
private int indexOfImage = 0;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ViewPager viewPager = findViewById(R.id.view_pager);
ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageUrls);
viewPager.setAdapter(adapter);
viewPager.setOnPageChangeListener(new MyPageChangeListener());
FloatingActionButton floatingActionButton = (FloatingActionButton)findViewById(R.id.fab);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
}
});
}
#Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
#SuppressWarnings("StatementWithEmptyBody")
#Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
private class MyPageChangeListener implements ViewPager.OnPageChangeListener {
#Override
public void onPageScrolled(int i, float v, int i1) {
}
#Override
public void onPageSelected(int i) {
MainActivity.this.indexOfImage = i;
}
#Override
public void onPageScrollStateChanged(int i) {
}
}
}
This is my viewpager adapter class
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private String[] imageUrls;
ViewPagerAdapter(Context context, String[] imageUrls) {
this.context = context;
this.imageUrls = imageUrls;
}
#Override
public int getCount() {
return imageUrls.length;
}
#Override
public boolean isViewFromObject(#NonNull View view, #NonNull Object object) {
return view == object;
}
#NonNull
#Override
public Object instantiateItem(#NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
Picasso.with(context)
.load(imageUrls[position])
.fit()
.centerCrop()
.error(R.drawable.ic_error_outline_black_24dp)
.into(imageView);
container.addView(imageView);
return imageView;
}
#Override
public void destroyItem(#NonNull ViewGroup container, int position, #NonNull Object object) {
container.removeView((View) object);
}
}
Add permission in manifest
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
Add this AsyncTask class in your MainActivity
public class SetWallpaper extends AsyncTask<String, Void, Bitmap> {
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
#Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap = null;
try {
bitmap = Picasso.get().load(params[0]).get();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
#Override
protected void onPostExecute (Bitmap result) {
super.onPostExecute(result);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext());
try {
wallpaperManager.setBitmap(result);
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Wallpaper changed", Toast.LENGTH_SHORT).show();
} catch (IOException ex) {
ex.printStackTrace();
}
}
#Override
protected void onPreExecute () {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading image...");
progressDialog.setCancelable(false);
progressDialog.show();
}
}
Then try
floatingActionButton.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
SetWallpaper sw = new SetWallpaper();
sw.execute(imageUrls[indexOfImage])
}
});

Bluetooth Printer Connection Failed in Android

I want to make a POS app. In this app, I need to print a receipt, but I have a problem with the bluetooth connection.
In this code, I want to set the printer device that I use in my fragment. I want the bluetooth to stay connected even though I move to another fragment. I put the code in my MainActivity, but the problem is every time I move to another fragment, mService is always null. So I couldn't connect to the device.
Please help me. Thanks in advance.
MainActivity.Java
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener{
private static final String TAG = "MainActivity";
Fragment fragment = null;
Class fragmentClass = null;
public static final int MESSAGE_STATE_CHANGE = 1;
public static final int MESSAGE_READ = 2;
public static final int MESSAGE_WRITE = 3;
public static final int MESSAGE_DEVICE_NAME = 4;
public static final int MESSAGE_TOAST = 5;
public static final int MESSAGE_CONNECTION_LOST = 6;
public static final int MESSAGE_UNABLE_CONNECT = 7;
private String mConnectedDeviceName = null;
// Key names received from the BluetoothService Handler
public static final String DEVICE_NAME = "device_name";
public static final String TOAST = "toast";
public static final int REQUEST_CONNECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;
private BluetoothAdapter mBluetoothAdapter = null;
public BluetoothService mService = null;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
fragmentClass = RegisterFragment.class;
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_main2, fragment).commit();
Log.v(TAG, "Starting DoDaily service...");
startService(new Intent(this, DoDaily.class));
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
FragmentManager fm = getSupportFragmentManager();
//if you added fragment via layout xml
if (!mBluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the session
} else {
if (mService == null) {
setMService();
}
}
}
#Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main2, menu);
return true;
}
#SuppressWarnings("StatementWithEmptyBody")
#Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
String TAG_FRAGMENT="";
if (id == R.id.nav_regist) {
fragmentClass = RegisterFragment.class;
TAG_FRAGMENT ="register";
// Handle the camera action
} else if (id == R.id.nav_activity) {
fragmentClass = ActivityFragment.class;
TAG_FRAGMENT ="activity";
}
else if(id == R.id.nav_inventory)
{
fragmentClass = InventoryFragment.class;
TAG_FRAGMENT ="inventory";
}
else if (id == R.id.nav_manage) {
fragmentClass = SettingFragment.class;
TAG_FRAGMENT ="setting";
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_main2, fragment,TAG_FRAGMENT).commit();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
#SuppressLint("HandlerLeak")
private final Handler mHandler = new Handler() {
#Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if (DEBUG)
Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case BluetoothService.STATE_CONNECTED:
//btnScan.setText(getText(R.string.Connecting));
fragment1.btnScanEnable(false);
break;
case BluetoothService.STATE_CONNECTING:
Toast.makeText(MainActivity.this,R.string.title_connecting,Toast.LENGTH_SHORT).show();
break;
case BluetoothService.STATE_LISTEN:
case BluetoothService.STATE_NONE:
Toast.makeText(MainActivity.this,R.string.title_not_connected,Toast.LENGTH_SHORT).show();
break;
}
break;
case MESSAGE_WRITE:
break;
case MESSAGE_READ:
break;
case MESSAGE_DEVICE_NAME:
// save the connected device's name
mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);
Toast.makeText(MainActivity.this,"Connected to " + mConnectedDeviceName,
Toast.LENGTH_SHORT).show();
String text ="Connected to "+mConnectedDeviceName;
fragment1.setTvText(text);
break;
case MESSAGE_TOAST:
Toast.makeText(MainActivity.this, msg.getData().getString(TOAST), Toast.LENGTH_SHORT).show();
break;
case MESSAGE_CONNECTION_LOST:
Toast.makeText(MainActivity.this, "Device connection was lost",Toast.LENGTH_SHORT).show();
String text1 ="Not Connect to Any Device";
fragment1.setTvText(text1);
// editText.setEnabled(false);
// sendButton.setEnabled(false);
break;
case MESSAGE_UNABLE_CONNECT:
Toast.makeText(MainActivity.this, "Unable to connect device",
Toast.LENGTH_SHORT).show();
break;
}
}
};
#Override
public void onStart() {
super.onStart();
// If Bluetooth is not on, request that it be enabled.
// setupChat() will then be called during onActivityResult
if (!mBluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the session
} else {
if (mService == null){
setMService();
}
}
}
#Override
public synchronized void onResume() {
super.onResume();
if (mService != null) {
if (mService.getState() == BluetoothService.STATE_NONE) {
// Start the Bluetooth services
mService.start();
}
}
}
#Override
public synchronized void onPause() {
super.onPause();
if (DEBUG)
Log.e(TAG, "- ON PAUSE -");
}
#Override
public void onStop() {
super.onStop();
if (DEBUG)
Log.e(TAG, "-- ON STOP --");
}
#Override
public void onDestroy() {
super.onDestroy();
// Stop the Bluetooth services
if (mService != null)
mService.stop();
if (DEBUG)
Log.e(TAG, "--- ON DESTROY ---");
}
#Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (DEBUG)
Log.d(TAG, "onActivityResult " + resultCode);
switch (requestCode) {
case REQUEST_CONNECT_DEVICE:{
// When DeviceListActivity returns with a device to connect
if (resultCode == Activity.RESULT_OK) {
// Get the device MAC address
String address = data.getExtras().getString(
DeviceListActivity.EXTRA_DEVICE_ADDRESS);
// Get the BLuetoothDevice object
if (BluetoothAdapter.checkBluetoothAddress(address)) {
BluetoothDevice device = mBluetoothAdapter
.getRemoteDevice(address);
// Attempt to connect to the device
mService.connect(device);
}
}
break;
}
case REQUEST_ENABLE_BT:{
// When the request to enable Bluetooth returns
if (resultCode == Activity.RESULT_OK) {
// Bluetooth is now enabled, so set up a session
// FragmentManager fm1 = getSupportFragmentManager();
// SettingFragment fragment1 = (SettingFragment) fm1.findFragmentByTag("setting");
// fragment1.KeyListenerInit();
setMService();
} else {
// User did not enable Bluetooth or an error occured
Log.d(TAG, "BT not enabled");
Toast.makeText(MainActivity.this, R.string.bt_not_enabled_leaving,Toast.LENGTH_SHORT).show();
onBackPressed();
}
break;
}
}
}
public void setMService()
{
mService = new BluetoothService(MainActivity.this, mHandler);
}
}
SettingFragment.Java
public class SettingFragment extends Fragment {
public static final int REQUEST_CONNECT_DEVICE = 1;
private static final String CHINESE = "GBK";
SessionManagement sessionManagement;
DatabaseHandler db;
TextView tvConnected;
Button btnScan;
Button btnTest;
public SettingFragment() {
// Required empty public constructor
}
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootview = inflater.inflate(R.layout.fragment_setting, container, false);
getActivity().setTitle("Setting");
btnScan = (Button)rootview.findViewById(R.id.btnScan);
btnTest = (Button) rootview.findViewById(R.id.btnTest);
tvConnected = (TextView) rootview.findViewById(R.id.tvPrinterConnect);
KeyListenerInit();
return rootview;
}
public void setTvText(String text)
{
tvConnected = (TextView) getActivity().findViewById(R.id.tvPrinterConnect);
tvConnected.setText(text);
}
public void btnScanEnable(Boolean set)
{
btnScan = (Button)getActivity().findViewById(R.id.btnScan);
btnScan.setEnabled(set);
}
public void KeyListenerInit() {
btnScan.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent serverIntent = new Intent(getActivity(), DeviceListActivity.class);
startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);
}
});
((MainActivity)getActivity()).setMService();
}
}
remove this line from fragment KeyListenerInit method because you already initialize object in Activity then why you again intialize this.
((MainActivity)getActivity()).setMService();
and remove this code from onCreate method because you already add this code in onStart method so no need in onCreate method:
if (!mBluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the session
} else {
if (mService == null) {
setMService();
}
}

ask runtime permissions for onMapsReady android

i have a phone with android 6.0, and the method onMapReady is not execute, because i think need runtime permissions, and i dont know how to do that, this is my code
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback {
GoogleMap map;
GoogleApiClient mGoogleApiClient;
String email;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
//obtener datos para la barra
if(user != null) {
String nombre=user.getDisplayName();
email=user.getEmail();
Uri foto=user.getPhotoUrl();
NavigationView navigationsView = (NavigationView) findViewById(R.id.nav_view);
View hView = navigationsView.getHeaderView(0);
TextView nav_user = (TextView)hView.findViewById(R.id.txtMail);
TextView name=(TextView) hView.findViewById(R.id.txtNombre);
ImageView img_user = (ImageView)hView.findViewById(R.id.profile_image);
name.setText(nombre);
nav_user.setText(email);
Picasso.with(this).load(foto).into(img_user);
}
else {
SharedPreferences loginbdd=getSharedPreferences("login", Context.MODE_PRIVATE);
email=loginbdd.getString("nombre","");
String nombre=loginbdd.getString("mail","");
NavigationView navigationsView = (NavigationView) findViewById(R.id.nav_view);
View hView = navigationsView.getHeaderView(0);
TextView nav_user = (TextView)hView.findViewById(R.id.txtMail);
TextView name=(TextView) hView.findViewById(R.id.txtNombre);
ImageView img_user = (ImageView)hView.findViewById(R.id.profile_image);
nav_user.setText(email);
name.setText(nombre);
}
}
private void goLogin() {
Intent intent = new Intent(this, Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
#Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
new AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.cerrar).setTitle("Cerrar Aplicación").setMessage("Deseas cerrar CicloMapp?")
.setCancelable(true).setPositiveButton("Si", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
}
})
.setNegativeButton("No", null).show();
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
} else if (id == R.id.endSession) {
new AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.cerrar)
.setTitle("Cerrar sessión")
.setMessage("Deseas cerrar sesión?")
.setCancelable(true)
.setPositiveButton("Si", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int which) {
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
if(user!= null){
LoginManager.getInstance().logOut();
FirebaseAuth.getInstance().signOut();
goLogin();
}else{
SharedPreferences loginbdd=getSharedPreferences("login", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=loginbdd.edit();
editor.remove("inicio");
editor.commit();
goLogin();
}
}
})
.setNegativeButton("No", null).show();
}
return super.onOptionsItemSelected(item);
}
#SuppressWarnings("StatementWithEmptyBody")
#Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.AgregarRuta) {
} else if (id == R.id.ValorarRuta) {
Intent i = new Intent(MainActivity.this, Valoraraciones.class);
i.putExtra("correo", email);
startActivity(i);
} else if (id == R.id.ReportarRuta) {
Intent i = new Intent(MainActivity.this, Reportar.class);
i.putExtra("correos", email);
startActivity(i);
} else if (id == R.id.Eventos) {
} else if (id == R.id.Refresco) {
} else if (id == R.id.Leyes) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
#Override
public void onMapReady(final GoogleMap googleMap) {
map=googleMap;
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
map.getUiSettings().setMapToolbarEnabled(false);
map.getUiSettings().setMyLocationButtonEnabled(true);
map.setMyLocationEnabled(true);
map.getUiSettings().setZoomControlsEnabled(true);
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(-33.447487,-70.673676));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(11);
map.moveCamera(center);
map.animateCamera(zoom);
Polyline po = new Polyline();
po.AddPolyline(map);
int height = 50;
int width = 50;
BitmapDrawable bitmapdraw = (BitmapDrawable) getResources().getDrawable(R.drawable.mruta);
Bitmap b = bitmapdraw.getBitmap();
Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
final Marcadores ma=new Marcadores();
ma.MarcadoreBdd(map,smallMarker);
}
}
maybe the onmylocation needs permissions ithink
ps: works perfect with android 4.4, the problem is with android 6.0 or higher
I also struggled with the runtime permissions when upgrading my app to a new Android version.
But I found this post very helpful:
https://inducesmile.com/android/android-6-marshmallow-runtime-permissions-request-example/
(The code below comes from this).
Basically, you need to check if you have the permissions in your App when you need them (perhaps during startup in your case) with code such as this;
if (ContextCompat.checkSelfPermission(WebActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(WebActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_REQUEST_CODE);
}
Then, you need to handle a response in an onRequestPermissionsResult method
#Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == MY_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//You have permission, so continue
}else if (grantResults[0] == PackageManager.PERMISSION_DENIED){
if (ActivityCompat.shouldShowRequestPermissionRationale(WebActivity.this, Manifest.permission.RECORD_AUDIO)) {
//Show an explanation to the user *asynchronously*
ActivityCompat.requestPermissions(WebActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_REQUEST_CODE);
}else{
//Never ask again and handle your app without permission.
}
}
}
}
Don't forget that you still need the permissions to be specified in your MANIFEST file.

Non-functioning of the application when adding Facebook Like Button

I am working on adding Facebook Like button to the application everything is normal but the problem when running the application and do not know what exactly is the problem
public class MainActivity extends AppCompatActivity {
Toolbar toolbar;
DrawerLayout mDrawerLayout;
NavigationView mNavigationView;
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
public static final String PROPERTY_REG_ID = "notifyId";
private static final String PROPERTY_APP_VERSION = "appVersion";
GoogleCloudMessaging gcm;
SharedPreferences preferences;
String reg_cgm_id;
static final String TAG = "MainActivity";
private AdView mAdView;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Settings.sdkInitialize(this);
LikeView likeView = (LikeView) findViewById(R.id.like_view);
likeView.setObjectId("https://m.facebook.com/DZ.4.EverR");
likeView.setLikeViewStyle(LikeView.Style.STANDARD);
likeView.setAuxiliaryViewPosition(LikeView.AuxiliaryViewPosition.INLINE);
likeView.setHorizontalAlignment(LikeView.HorizontalAlignment.CENTER);
preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
//show admob banner ad
mAdView = (AdView) findViewById(R.id.adView);
mAdView.loadAd(new AdRequest.Builder().build());
mAdView.setAdListener(new AdListener() {
#Override
public void onAdClosed() {
}
#Override
public void onAdFailedToLoad(int error) {
mAdView.setVisibility(View.GONE);
}
#Override
public void onAdLeftApplication() {
}
#Override
public void onAdOpened() {
}
#Override
public void onAdLoaded() {
mAdView.setVisibility(View.VISIBLE);
}
});
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mNavigationView = (NavigationView) findViewById(R.id.main_drawer) ;
mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.frame_container, new FragmentRecent()).commit();
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
#Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
//setTitle(menuItem.getTitle());
if (menuItem.getItemId() == R.id.drawer_recent) {
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, new FragmentRecent()).commit();
}
if (menuItem.getItemId() == R.id.drawer_category) {
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, new FragmentCategory()).commit();
}
if (menuItem.getItemId() == R.id.drawer_favorite) {
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, new FragmentFavorite()).commit();
}
if (menuItem.getItemId() == R.id.drawer_rate) {
final String appName = getPackageName();
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appName)));
}
}
if (menuItem.getItemId() == R.id.drawer_more) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.play_more_apps))));
}
if (menuItem.getItemId() == R.id.drawer_setting) {
Intent i = new Intent(getBaseContext(), SettingsActivity.class);
startActivity(i);
}
return false;
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
// init analytics tracker
((Analytics) getApplication()).getTracker();
// GCM
if (checkPlayServices()) {
gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
String reg_cgm_id = getRegistrationId(getApplicationContext());
Log.i(TAG, "Play Services Ok.");
if (reg_cgm_id.isEmpty()) {
Log.i(TAG, "Find Register ID.");
registerInBackground();
}
} else {
Log.i(TAG, "No valid Google Play Services APK found.");
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}
#Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
}
else {
super.onBackPressed();
}
}
#Override
public void onStart() {
super.onStart();
// analytics
GoogleAnalytics.getInstance(this).reportActivityStart(this);
}
#Override
public void onStop() {
super.onStop();
// analytics
GoogleAnalytics.getInstance(this).reportActivityStop(this);
}
#Override
protected void onPause() {
mAdView.pause();
super.onPause();
}
#Override
protected void onResume() {
super.onResume();
mAdView.resume();
}
#Override
protected void onDestroy() {
mAdView.destroy();
super.onDestroy();
}
#Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
LikeView.handleOnActivityResult(this, requestCode, resultCode, data);
}
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(MainActivity.this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this, 9000).show();
} else {
Log.i(TAG, "This device is not supported.");
}
return false;
}
return true;
}
private void storeRegistrationId(Context context, String regId) {
int appVersion = getAppVersion(context);
Log.i(TAG, "Saving regId on app version " + appVersion);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(PROPERTY_REG_ID, regId);
editor.putInt(PROPERTY_APP_VERSION, appVersion);
editor.commit();
}
private String getRegistrationId(Context context) {
String registrationId = preferences.getString(PROPERTY_REG_ID, "");
if (registrationId.isEmpty()) {
Log.i(TAG, "Registration not found.");
return "";
}
// Check if app was updated; if so, it must clear the registration ID
// since the existing regID is not guaranteed to work with the new
// app version.
int registeredVersion = preferences.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
int currentVersion = getAppVersion(context);
if (registeredVersion != currentVersion) {
Log.i(TAG, "Analytics version changed.");
return "";
}
return registrationId;
}
private void registerInBackground() {
new AsyncTask<Void, Void, String>() {
#Override
protected String doInBackground(Void... params) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(MainActivity.this);
}
reg_cgm_id = gcm.register(getString(R.string.google_api_sender_id));
msg = "Device registered, registration ID=" + reg_cgm_id;
Log.d(TAG, "ID GCM: " + reg_cgm_id);
sendRegistrationIdToBackend();
storeRegistrationId(MainActivity.this, reg_cgm_id);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
return msg;
}
#Override
protected void onPostExecute(String msg) {
}
}.execute(null, null, null);
}
private static int getAppVersion(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException("Could not get package name: " + e);
}
}
private void sendRegistrationIdToBackend() {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("token", reg_cgm_id));
new HttpTask(null, MainActivity.this, Config.SERVER_URL + "/register.php", nameValuePairs, false).execute();
}
}
This is the important part of your log:
java.lang.NullPointerException: Attempt to invoke virtual method
'void com.facebook.widget.LikeView.setObjectId(java.lang.String)'
on a null object reference at android.app.ActivityThread.performLaunchActivity
It's saying that you're trying to call the method setObjectId on a LikeView that is null. So, step through that part of the code and figure out why the LikeView is null.

Categories

Resources