ImplicitApp


Hallo temen2, kita akan belajar membuat implicit app di projek kali ini,
yaitu membuat intent ke program bawaan android itu sendiri,
seperti : kamera,sms, telepon dan kontak...

yuk kita lihat langkah2nya...

1. langkah pertama, kita membuat layoutnya terlebih dahulu

layout activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_audio_manager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Audio Manager"/>

    <Button
        android:id="@+id/btn_notification"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Notification"/>

    <Button
        android:id="@+id/btn_wifi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Wifi"/>

    <Button
        android:id="@+id/btn_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Email"/>

    <Button
        android:id="@+id/btn_sms"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SMS"/>

    <Button
        android:id="@+id/btn_alarm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ALARM"/>

</LinearLayout>

layout audio_manager

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".AudioManager">

    <Button
        android:id="@+id/btn_ring"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ring"/>

    <Button
        android:id="@+id/btn_silent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Silent"/>

    <Button
        android:id="@+id/btn_vibrate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Vibrate"/>

</LinearLayout>

layout wifi

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".WifiActivity">

    <Switch
        android:id="@+id/sw_wifi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Access Wifi"/>

    <TextView
        android:id="@+id/tv_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Status Wifi"/>

</LinearLayout>

layout SMS

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SmsActivity">

    <EditText
        android:id="@+id/edt_to"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="To"
        android:clickable="false"
        android:focusable="false"
        android:inputType="phone"/>

    <EditText
        android:id="@+id/edt_body_sms"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Message"
        android:lines="5"/>

    <Button
        android:id="@+id/btn_send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Quick SMS Send"/>

    <Button
        android:id="@+id/btn_send_intent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Intent SMS Send"/>

</LinearLayout>

layout email

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".EmailActivity">

    <EditText
        android:id="@+id/edt_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:hint="To"/>

    <EditText
        android:id="@+id/edt_subject"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Subject"/>

    <EditText
        android:id="@+id/edt_body_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:lines="5"
        android:hint="Compose Email"/>

    <Button
        android:id="@+id/btn_send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Send"/>





</LinearLayout>

layout alarm

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".AlarmActivity">

    <AnalogClock
        android:id="@+id/analog_clock"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"/>

    <Button
        android:id="@+id/btn_set_alarm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="Set Alarm"/>

    <TextView
        android:id="@+id/tv_time_alarm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:text="Set Time Alarm"/>

</LinearLayout>

kemudian jangan kita membuat package baru di res untuk memberi sound alarm kita,
kita beri nama raw

lalu kita pastekan kedalamnya file mp3 kita

2. langkah kedua, kita masukan library di module app berikut

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.example.implicitapp"
        minSdkVersion 15
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.jakewharton:butterknife:10.2.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}


3. langkah ketiga, kita membuat kelas...

kita buat class AudioManager

package com.example.implicitapp;

import androidx.appcompat.app.AppCompatActivity;

import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class AudioManager extends AppCompatActivity {

    @BindView(R.id.btn_ring)
    Button btnRing;
    @BindView(R.id.btn_silent)
    Button btnSilent;
    @BindView(R.id.btn_vibrate)
    Button btnVibrate;

    android.media.AudioManager audioManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_audio_manager);

        ButterKnife.bind(this);

        audioManager = (android.media.AudioManager) getSystemService(AUDIO_SERVICE);
    }

    @OnClick({R.id.btn_ring, R.id.btn_silent, R.id.btn_vibrate})
    public void onViewClicked(View view){
        switch (view.getId()){
            case R.id.btn_ring:
                audioManager.setRingerMode(android.media.AudioManager.RINGER_MODE_NORMAL);
                Toast.makeText(this, "Mode Normal", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_silent:
                NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                    && !notificationManager.isNotificationPolicyAccessGranted()) {
                    Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
                    startActivity(intent);
                }
                audioManager.setRingerMode(android.media.AudioManager.RINGER_MODE_SILENT);
                Toast.makeText(this, "Mode Silent", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_vibrate:
                audioManager.setRingerMode(android.media.AudioManager.RINGER_MODE_VIBRATE);
                Toast.makeText(this, "Mode Vibrate", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

Class Wifi

package com.example.implicitapp;

import androidx.appcompat.app.AppCompatActivity;

import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;

import butterknife.BindView;
import butterknife.ButterKnife;

public class WifiActivity extends AppCompatActivity {

    @BindView(R.id.sw_wifi)
    Switch swWifi;
    @BindView(R.id.tv_status)
    TextView tvStatus;

    WifiManager wifiManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wifi);

        ButterKnife.bind(this);

        wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);

        if (wifiManager.isWifiEnabled()){
            swWifi.setChecked(true);
            tvStatus.setText("Wifi Aktif");
        }else {
            swWifi.setChecked(false);
            tvStatus.setText("Wifi Tidak Aktif");
        }

        swWifi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    wifiManager.setWifiEnabled(true);
                    tvStatus.setText("Wifi Aktif");
                }else {
                    wifiManager.setWifiEnabled(false);
                    tvStatus.setText("Wifi Tidak Aktif");
                }
            }
        });
    }
}

kemudian kita buat class Email

package com.example.implicitapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class EmailActivity extends AppCompatActivity {

    @BindView(R.id.edt_email)
    EditText edtEmail;
    @BindView(R.id.edt_subject)
    EditText edtSubject;
    @BindView(R.id.edt_body_email)
    EditText edtBodyEmail;
    @BindView(R.id.btn_send)
    Button btnSend;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_email);
        ButterKnife.bind(this);
    }

    @OnClick(R.id.btn_send)
    public void onViewClicked(){
        String email = edtEmail.getText().toString().trim();
        String subject = edtSubject.getText().toString().trim();
        String bodyemail = edtBodyEmail.getText().toString().trim();

        if (TextUtils.isEmpty(email) || TextUtils.isEmpty(subject) || TextUtils.isEmpty(bodyemail)){
            Toast.makeText(this, "Fill Requared!", Toast.LENGTH_SHORT).show();
        }else{
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_EMAIL, new String[]{email});
            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
            intent.putExtra(Intent.EXTRA_TEXT, bodyemail);
            intent.setType("message/rfc822");
            startActivity(intent);
        }
    }
}

lalu kita membuat class SMS

package com.example.implicitapp;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class SmsActivity extends AppCompatActivity {

    @BindView(R.id.edt_to)
    EditText edtTo;
    @BindView(R.id.edt_body_sms)
    EditText edtBodySms;
    @BindView(R.id.btn_send)
    Button btnSend;
    @BindView(R.id.btn_send_intent)
    Button btnSendIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sms);

        ButterKnife.bind(this);

        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.SEND_SMS)
                != PackageManager.PERMISSION_GRANTED){
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.SEND_SMS)){

            }else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.SEND_SMS},
                        10);
            }
        }
    }

    @OnClick({R.id.edt_to, R.id.btn_send, R.id.btn_send_intent})
    public void onViewClicked(View view){

        String noTelp = edtTo.getText().toString().trim();
        String bodySms = edtBodySms.getText().toString().trim();

        switch (view.getId()){
            case R.id.edt_to:
                Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
                startActivityForResult(intent, 100);
                break;
            case R.id.btn_send:
                if (TextUtils.isEmpty(noTelp) || TextUtils.isEmpty(bodySms)){
                    Toast.makeText(this, "Fill required", Toast.LENGTH_SHORT).show();
                }else {
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(noTelp, null, bodySms, null, null);
                    Toast.makeText(this, "Sent", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.btn_send_intent:
                if (TextUtils.isEmpty(noTelp) || TextUtils.isEmpty(bodySms)){
                    Toast.makeText(this, "Fill required", Toast.LENGTH_SHORT).show();
                }else {
                    Intent intentSms = new Intent(Intent.ACTION_SENDTO);
                    intentSms.setData(Uri.parse("sms to: " + Uri.encode(noTelp)));
                    intentSms.putExtra("sms_body", bodySms);
                    startActivity(intentSms);
                }
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 100){
            if (resultCode == RESULT_OK){
                Cursor cursor = null;
                Uri uri = data.getData();
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
                    cursor = getContentResolver().query(uri, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},
                            null, null, null, null);
                }
                if (cursor != null && cursor.moveToNext()){
                    String nomerTelepon = cursor.getString(0);
                    edtTo.setText(nomerTelepon);
                }
            }else if (resultCode == RESULT_CANCELED){
                Toast.makeText(this, "Cancel", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

lalu membuat class AlarmActivity

package com.example.implicitapp;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.icu.util.Calendar;
import android.os.Build;
import android.os.Bundle;
import android.widget.AnalogClock;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class AlarmActivity extends AppCompatActivity {

    @BindView(R.id.analog_clock)
    AnalogClock analogClock;
    @BindView(R.id.btn_set_alarm)
    Button btnSetAlarm;
    @BindView(R.id.tv_time_alarm)
    TextView tvTimeAlarm;

    TimePickerDialog timePickerDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alarm);

        ButterKnife.bind(this);
    }

    TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onTimeSet(TimePicker timePicker, int i, int i1) {
            Calendar calNow = Calendar.getInstance();
            Calendar calSet = (Calendar) calNow.clone();

            calSet.set(Calendar.HOUR_OF_DAY, i);
            calSet.set(Calendar.MINUTE, i1);
            calSet.set(Calendar.SECOND, 0);
            calSet.set(Calendar.MILLISECOND, 0);

            if (calSet.compareTo(calNow) <= 0){
                calSet.add(Calendar.DATE, 1);
            }else if(calSet.compareTo(calNow) > 0){
                Toast.makeText(AlarmActivity.this, "Alarm setted", Toast.LENGTH_SHORT).show();
            }
            tvTimeAlarm.setText("Alarm set for : " + calSet.getTime());

            Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 1, intent, 0);

            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), pendingIntent);
        }
    };

    @RequiresApi(api = Build.VERSION_CODES.N)
    @OnClick(R.id.btn_set_alarm)
    public void onViewClicked(){
        Calendar calendar = Calendar.getInstance();
        timePickerDialog = new TimePickerDialog(this, timeSetListener,
                calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true);
        timePickerDialog.setTitle("set time alarm");
        timePickerDialog.show();
    }
}


lalu membuat class AlarmReceiver

package com.example.implicitapp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Alarm Ringing", Toast.LENGTH_SHORT).show();

        MediaPlayer player = MediaPlayer.create(context, R.raw.alarm);
        player.start();
    }
}

dan terakhir kita buat class MainActivity

package com.example.implicitapp;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.btn_audio_manager)
    Button btnAudioManager;
    @BindView(R.id.btn_notification)
    Button btnNotification;
    @BindView(R.id.btn_wifi)
    Button btnWifi;
    @BindView(R.id.btn_email)
    Button btnEmail;
    @BindView(R.id.btn_sms)
    Button btnSms;
    @BindView(R.id.btn_alarm)
    Button btnAlarm;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);
    }

    @OnClick({R.id.btn_audio_manager, R.id.btn_notification, R.id.btn_wifi, R.id.btn_email, R.id.btn_sms, R.id.btn_alarm})
    public void onViewClicked(View view){
        switch (view.getId()){
            case R.id.btn_audio_manager:
                startActivity(new Intent(this, AudioManager.class));
                break;
            case R.id.btn_notification:
                showNotification();
                break;
            case R.id.btn_email:
                startActivity(new Intent(this, EmailActivity.class));
                break;
            case R.id.btn_wifi:
                startActivity(new Intent(this, WifiActivity.class));
                break;
            case R.id.btn_sms:
                startActivity(new Intent(this, SmsActivity.class));
                break;
            case R.id.btn_alarm:
                startActivity(new Intent(this, AlarmActivity.class));
                break;
        }
    }

    private void showNotification() {
        int NOTIFICATION_ID = 1;
        String CHANNEL_ID = "channel_1";
        String CHANNEL_NAME = "notif Channel";

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://idn.sch.id"));
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 2, intent, 0);

        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher_round)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                .setContentTitle("Simply Notification")
                .setContentText("Test Notification")
                .setSubText("Sub Text")
                .setAutoCancel(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);

            if (notificationManager != null){
                notificationManager.createNotificationChannel(notificationChannel);
            }
        }

        Notification notification = notificationBuilder.build();

        if (notificationManager != null){
            notificationManager.notify(NOTIFICATION_ID, notification);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 2){
            if (resultCode == RESULT_OK){
                Toast.makeText(this, "Click Notification", Toast.LENGTH_SHORT).show();
                Log.d("requestcode", "OK");
            }
        }
    }
}

lalu di manifest, kita buat permission

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.implicitapp">

    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <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=".AlarmActivity"></activity>
        <activity android:name=".SmsActivity" />
        <activity android:name=".EmailActivity" />
        <activity android:name=".WifiActivity" />
        <activity android:name=".AudioManager" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".AlarmReceiver" />
    </application>

</manifest>

dan selesai...















alhamdulillah selesai... selamat mencoba...

Komentar

Postingan populer dari blog ini

Relay lampu menggunakan NodeMCU

Kode program (sketch) DHT11 di Arduino Uno

Kode program ( sketch ) sensor infrared di Arduino Uno with buzzer