Showing posts with label android. Show all posts
Showing posts with label android. Show all posts

How to create alerts if there is an updated version in the app store play in android studio

MOH. LUKMAN SHOLEH 10:22 PM Add Comment


How to create alerts if there is an updated version in the app play store android studio



  1. Buka android studio kemudian coba membuat satu class untuk bisa membuat atau cek update
  2. Tambahkah perintah berikut pada gradle :

compile 'org.jsoup:jsoup:1.8.3'
      3. Kemudian Synchronize gradle
      4. Tambahkan baris code berikut pada class anda :

private class GetVersionCode extends AsyncTask<Void, String, String> {
@Override protected String doInBackground(Void... voids) {
String newVersion = null;
try {
newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + ScannerID.this.getPackageName() + "&hl=it")
.timeout(30000)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.get()
.select("div[itemprop=softwareVersion]")
.first()
.ownText();
return newVersion;
} catch (Exception e) {
return newVersion;
}
}
@Override protected void onPostExecute(String onlineVersion) {
super.onPostExecute(onlineVersion);
if (onlineVersion != null && !onlineVersion.isEmpty()) {
if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
System.out.println("HARUS UPDATE");
//isi dengan perintah anda
}else {
System.out.println("PALING TERBARU");
}
}
Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion);
}
}

   5. Kemudian tambahkan code berikut untuk menampilkan version code project anda :

PackageManager manager = this.getPackageManager();
try {
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
String packageName = info.packageName;
int versionCode = info.versionCode;
currentVersion = info.versionName;
} catch (PackageManager.NameNotFoundException e) {
// TODO Auto-generated catch block} 

    6. Kemudian berikan perintah ini, untuk mengeksekusi :

new GetVersionCode().execute(); 
   7. Berikut Contohnya :


How to add file chooser action photo and document in web view in android studio

MOH. LUKMAN SHOLEH 11:17 PM 1 Comment


How to add file chooser action photo and document in web view in android studio


Cara membuat file chooser dengan action kamera ataupun dokumen pada android studio,berikut langsung sajja disedot projectnya :

1. Pastikan anda telah menginstall android studio, jika belum download DISINI
2. Buatlah class bernama MainActivity ataupun class dengan nama terserah anda :


import android.app.Activity; import android.app.DownloadManager; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Parcelable; import android.provider.MediaStore; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.webkit.DownloadListener; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class MainActivity extends Activity { private static final int INPUT_FILE_REQUEST_CODE = 1; private static final int FILECHOOSER_RESULTCODE = 1; private static final String TAG = MainActivity.class.getSimpleName(); private WebView webView; private WebSettings webSettings; private ValueCallback<Uri> mUploadMessage; private Uri mCapturedImageURI = null; private ValueCallback<Uri[]> mFilePathCallback; private String mCameraPhotoPath; private SwipeRefreshLayout swipeRefreshLayout; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (requestCode != INPUT_FILE_REQUEST_CODE || mFilePathCallback == null) { super.onActivityResult(requestCode, resultCode, data); return; } Uri[] results = null; // Check that the response is a good one if (resultCode == Activity.RESULT_OK) { if (data == null) { // If there is not data, then we may have taken a photo if (mCameraPhotoPath != null) { results = new Uri[]{Uri.parse(mCameraPhotoPath)}; } } else { String dataString = data.getDataString(); if (dataString != null) { results = new Uri[]{Uri.parse(dataString)}; } } } mFilePathCallback.onReceiveValue(results); mFilePathCallback = null; } else if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { if (requestCode != FILECHOOSER_RESULTCODE || mUploadMessage == null) { super.onActivityResult(requestCode, resultCode, data); return; } if (requestCode == FILECHOOSER_RESULTCODE) { if (null == this.mUploadMessage) { return; } Uri result = null; try { if (resultCode != RESULT_OK) { result = null; } else { // retrieve from the private variable if the intent is null result = data == null ? mCapturedImageURI : data.getData(); } } catch (Exception e) { Toast.makeText(getApplicationContext(), "activity :" + e, Toast.LENGTH_LONG).show(); } mUploadMessage.onReceiveValue(result); mUploadMessage = null; } } return; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.webView); webSettings = webView.getSettings(); webSettings.setAppCacheEnabled(true); webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK); webSettings.setJavaScriptEnabled(true); webSettings.setLoadWithOverviewMode(true); webSettings.setAllowFileAccess(true); webView.setWebViewClient(new PQClient()); webView.setWebChromeClient(new PQChromeClient()); //if SDK version is greater of 19 then activate hardware acceleration otherwise activate software acceleration if (Build.VERSION.SDK_INT >= 19) { webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } else if(Build.VERSION.SDK_INT >=11 && Build.VERSION.SDK_INT < 19) { webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); swipeRefreshLayout.setColorSchemeResources(R.color.a, R.color.b, R.color.c, R.color.d); swipeRefreshLayout.setEnabled(false); swipeRefreshLayout.setRefreshing(true); //webView.loadUrl("file:///android_asset/index.html"); webView.loadUrl("http://ngo-ding.blogspot.co.id/"); webView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { DownloadManager.Request request = new DownloadManager.Request( Uri.parse(url)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed! request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Download Btsb_"); DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded Toast.LENGTH_LONG).show(); } }); } private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); File imageFile = File.createTempFile( imageFileName, /* prefix */ ".jpg", /* suffix */ storageDir /* directory */ ); return imageFile; } public class PQChromeClient extends WebChromeClient { // For Android 5.0 public boolean onShowFileChooser(WebView view, ValueCallback<Uri[]> filePath, WebChromeClient.FileChooserParams fileChooserParams) { // Double check that we don't have any existing callbacks if (mFilePathCallback != null) { mFilePathCallback.onReceiveValue(null); } mFilePathCallback = filePath; Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { // Create the File where the photo should go File photoFile = null; try { photoFile = createImageFile(); takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath); } catch (IOException ex) { // Error occurred while creating the File Log.e(TAG, "Unable to create Image File", ex); } // Continue only if the File was successfully created if (photoFile != null) { mCameraPhotoPath = "file:" + photoFile.getAbsolutePath(); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); } else { takePictureIntent = null; } } Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); contentSelectionIntent.setType("image/*"); Intent[] intentArray; if (takePictureIntent != null) { intentArray = new Intent[]{takePictureIntent}; } else { intentArray = new Intent[0]; } Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); startActivityForResult(chooserIntent, INPUT_FILE_REQUEST_CODE); return true; } // openFileChooser for Android 3.0+ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { mUploadMessage = uploadMsg; // Create AndroidExampleFolder at sdcard // Create AndroidExampleFolder at sdcard File imageStorageDir = new File( Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES) , "AndroidExampleFolder"); if (!imageStorageDir.exists()) { // Create AndroidExampleFolder at sdcard imageStorageDir.mkdirs(); } // Create camera captured image file path and name File file = new File( imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg"); Log.d("File", "File: " + file); mCapturedImageURI = Uri.fromFile(file); // Camera capture image intent final Intent captureIntent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE); captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); // Create file chooser intent Intent chooserIntent = Intent.createChooser(i, "Image Chooser"); // Set camera intent to file chooser chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS , new Parcelable[] { captureIntent }); // On select image call onActivityResult method of activity startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE); } // openFileChooser for Android < 3.0 public void openFileChooser(ValueCallback<Uri> uploadMsg) { openFileChooser(uploadMsg, ""); } //openFileChooser for other Android versions public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { openFileChooser(uploadMsg, acceptType); } } public boolean onKeyDown(int keyCode, KeyEvent event) { // Check if the key event was the Back button and if there's history if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { webView.goBack(); return true; } // If it wasn't the Back key or there's no web page history, bubble up to the default // system behavior (probably exit the activity) return super.onKeyDown(keyCode, event); } public class PQClient extends WebViewClient { ProgressDialog progressDialog; public boolean shouldOverrideUrlLoading(WebView view, String url) { // If url contains mailto link then open Mail Intent if (url.contains("mailto:")) { // Could be cleverer and use a regex //Open links in new browser view.getContext().startActivity( new Intent(Intent.ACTION_VIEW, Uri.parse(url))); // Here we can open new activity return true; }else { // Stay within this webview and load url view.loadUrl(url); return true; } } //Show loader on url load public void onPageStarted(android.webkit.WebView view, String url, Bitmap favicon) { swipeRefreshLayout.setRefreshing(true); // Then show progress Dialog // in standard case YourActivity.this if (progressDialog == null) { progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setMessage("Loading..."); progressDialog.hide(); } } // Called when all page resources loaded public void onPageFinished(android.webkit.WebView view, String url) { swipeRefreshLayout.setRefreshing(false); webView.loadUrl("javascript:(function(){ "+ "document.getElementById('android-app').style.display='none';})()"); try { // Close progressDialog if (progressDialog.isShowing()) { progressDialog.dismiss(); progressDialog = null; } } catch (Exception exception) { exception.printStackTrace(); } } } }
3.Buatlah xml pada layout dengan nama activity_main :
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" /> </LinearLayout> </android.support.v4.widget.SwipeRefreshLayout>
 4. Kemudian tambahkan colour pada valuenya :
<color name="a">#ea3030</color> <color name="b">#FFFD8C14</color> <color name="c">#c099cc00</color> <color name="d">#3f80f1</color>

5. Terakhir jangan lupa, tambahkan permission pada android manifestnya :
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
6. Kemudian Run aplikasinya, berikut screenshoot programnya :
Jika ingin mendownload contoh APK nya silahkan DISINI, atau Projectnya DISINI



crud (cread,read,update,delete) mysql android studio with volley

MOH. LUKMAN SHOLEH 9:39 PM 1 Comment

Oke, langsung saja. kali ini saya akan membagikan tutorial CRUD menggunakan library volley pada android studio.
cekidot :


1. Buka android studio anda, jika belum punya silahkan download langsung DISINI
2. kemudian download program crudnya DISINI, library volley DISINI
3. Atau import library volley langsung dari gradle, cukup tambahkan perintah berikut :



4. berikut struktur projectnya : 


5. Strukturnya : 

  • Buat package Adapter  -> yang berisi class -> AdapterData
  • Buat package Model -> yang berisi class ModelData
  • Buat package Util -> yang berisi class AppController dan ServerApi
  • Buat class Delete,Insert dan MainActivity

6. Berikut ScreenShoot programnya :










How to get intent implicit from package name in android studio

MOH. LUKMAN SHOLEH 7:35 PM Add Comment

        Oke, sekarang saya akan membagikan sedikit turotial bagaimana  cara intent atau include aplikasi lain pada android studio.
Langsung saja simak informasi berikut :


1. Pertama, silahkan cek package name atau id pada aplikasi tersebut. contoh :
    contoh dari play store : scanab


   Contoh  melihat id name atau package dari gradle. pertama buka project -> masuk ke gradle -> cari tulisan applicationId. Seperti gmbar dibawah ini :



2. Setelah anda mengetahui id atau package namenya, selanjutnya tambahkan script berikut untuk memanggil aplikasi tersebut :

private void cekaplikasi() {
        // TODO Auto-generated method stub
        PackageManager pm = getPackageManager();
        Intent i = pm.getLaunchIntentForPackage("lukman.qnemelu.unmuh");
     
        if (i.resolveActivity(getPackageManager()) != null)
       
            startActivityForResult(i, 0);
        else {
         
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
            alertDialog.setTitle("Informasi");
            alertDialog.setMessage("Aplikasi Scanab Belum Terinstal, Instal Via Google Play?");
            alertDialog.setPositiveButton("Ya", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    final String appPackageName ="lukman.qnemelu.unmuh";
                    try {
                        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
                    } catch (android.content.ActivityNotFoundException anfe) {
                        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
                    }
                }
            });
            alertDialog.setNegativeButton("Tidak",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                        }
                    });
            alertDialog.show();
        }
    }


 3. Ganti tulisan lukman.qnemelu.unmuh dengan package name aplikasi anda. untuk penjelasan kode diatas adalah jika aplikasi yang mau dijalankan itu belum ada, maka harus mendownload diplay store. jika aplikasi tersebut sudah ada, maka aplikasi tersebut akan langsung dijalankan.

untuk pemanggilan cukup tinggal menambahkan cekaplikasi(); pada perintah button atau pun cek aplikasi secara otomatis didalam OnCreate View.


Keep Calm, and Keep Coding 




Crud (create, read,update and delete) php mysql in android studio

MOH. LUKMAN SHOLEH 9:50 PM Add Comment

 
 



          Oke, karena begitu banyak request tentang bagaimana crud menggunakan php mysql yang terkoneksi dengan android studio, maka kali ini saya akan membagikan source code example crud menggunakan php mysql di android studio.

Langsung saja langkah-langkahnya sebagai berikut :

1. Buka android Studio
2. Download library apache.http.client  DISINI
3. Extract file tersebut, kemudian copy kedalam project anda. seperti gambar dibawah ini :




4. Setelah itu, tambahkan library melalui project struktur ( klik file -> project structure ) seperti gambar ini :



5. Setelah semua libary diimport, langkah selanjutnya adalah membuat class-class berikut.





6. Kemudian Buatlah sebuah database, contoh product :


CREATE DATABASE crudlukman;
CREATE TABLE products(
pid int(11) primary key auto_increment,
name varchar(100) not null,
price decimal(10,2) not null,
description text,
created_at timestamp default now(),
updated_at timestamp
);



7. Kemudian extract file yang anda download tadi, import or open file project  scan_bahar. dan file .php kedalam server anda. seperti gambar dibawah ini .



Jika, pada saat run aplication detail product error atau force close seperti ini :




Tambahkan Baris Source berikut :



StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);




Hasil ScreenShoot Program :










Download Source Code DISINI

JIKA LINK MATI, SILAHKAN KIRIM PESAN EMAIL ATAU KOMENTAR!!
Sumber : androidhive