Commit 037b9250 by Amsal Situmorang

Prasidang

parent 1f566354
package com.example.tad3ti03; package com.example.tad3ti03;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.Toolbar;
import com.example.tad3ti03.Adapter.AppAdapter; public class HomeActivity extends AppCompatActivity implements View.OnClickListener{
import com.example.tad3ti03.Model.AppInfo;
import com.google.android.material.snackbar.Snackbar;
import java.text.Collator; Button btn_upload;
import java.util.ArrayList; Button btn_scan;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ListView listView;
SwipeRefreshLayout swipeRefreshLayout;
boolean mIncludeSystemApps;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
listView = findViewById(R.id.listView);
swipeRefreshLayout = findViewById(R.id.swipeRefresh);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AppInfo app = (AppInfo) parent.getItemAtPosition(position);
// System.out.println(app.info.sourceDir());
// Toast.makeText(getApplicationContext() , app.info.sourceDir, Toast.LENGTH_LONG).show();
Intent myintent = getPackageManager().getLaunchIntentForPackage(app.info.packageName);
if(myintent == null)
{
Toast.makeText(getApplicationContext() , "No launcher attached with this app", Toast.LENGTH_LONG).show();
}
else
{
startActivity(myintent);
}
}
});
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refreshIt();
}
});
}
@Override
protected void onResume() {
super.onResume();
LoadAppInfoTask loadAppInfoTask = new LoadAppInfoTask();
loadAppInfoTask.execute(PackageManager.GET_META_DATA);
}
private void refreshIt(){
LoadAppInfoTask loadAppInfoTask = new LoadAppInfoTask();
loadAppInfoTask.execute(PackageManager.GET_META_DATA);
}
btn_upload = findViewById(R.id.btn_upload);
btn_scan = findViewById(R.id.btn_scan);
class LoadAppInfoTask extends AsyncTask<Integer, Integer, List<AppInfo>> btn_upload.setOnClickListener(this);
{ btn_scan.setOnClickListener(this);
@Override
protected void onPreExecute() {
super.onPreExecute();
swipeRefreshLayout.setRefreshing(true);
}
@Override
protected List<AppInfo> doInBackground(Integer... params) {
List<AppInfo> apps = new ArrayList<>();
PackageManager packageManager = getPackageManager();
List<ApplicationInfo> infos = packageManager.getInstalledApplications(params[0]);
for (ApplicationInfo info:infos)
{
if (mIncludeSystemApps && (info.flags & ApplicationInfo.FLAG_SYSTEM) == 1)
{
continue;
}
AppInfo app = new AppInfo();
app.info = info;
app.label = (String) info.loadLabel(packageManager);
apps.add(app);
}
//sort the data
Collections.sort(apps, new DNComparator());
return apps;
} }
@Override @Override
protected void onPostExecute(List<AppInfo> appInfos) { public void onClick(View v) {
super.onPostExecute(appInfos); switch (v.getId()){
listView.setAdapter(new AppAdapter(MainActivity.this, appInfos)); case R.id.btn_upload:
swipeRefreshLayout.setRefreshing(false); Intent uploadIntent = new Intent(HomeActivity.this, MainActivity.class);
Snackbar.make(listView, appInfos.size() + " applications loaded" , Snackbar.LENGTH_LONG).show(); startActivity(uploadIntent);
} break;
} case R.id.btn_scan:
Intent scanIntent = new Intent(HomeActivity.this, ScanActivity.class);
private class DNComparator implements Comparator<AppInfo> startActivity(scanIntent);
{ break;
@Override
public int compare(AppInfo aa, AppInfo ab) {
CharSequence sa = aa.label;
CharSequence sb = ab.label;
if(sa == null)
{
sa = aa.info.packageName;
}
if(sb == null)
{
sb = ab.info.packageName;
}
return Collator.getInstance().compare(sa.toString() , sb.toString());
} }
} }
} }
package com.example.tad3ti03;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class ScanActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
}
}
package com.example.tad3ti03;
import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
import com.example.tad3ti03.Adapter.AppAdapter;
import com.example.tad3ti03.Model.AppInfo;
import com.google.android.material.snackbar.Snackbar;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MainActivity extends AppCompatActivity {
GridView gridView;
boolean mIncludeSystemApps;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = findViewById(R.id.griview);
gridView.setTextFilterEnabled(true);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AppInfo app = (AppInfo) parent.getItemAtPosition(position);
Intent myintent = getPackageManager().getLaunchIntentForPackage(app.info.packageName);
if(myintent == null)
{
Toast.makeText(getApplicationContext() , "No launcher attached with this app", Toast.LENGTH_LONG).show();
}
else
{
startActivity(myintent);
}
}
});
List<AppInfo> apps = new ArrayList<>();
PackageManager packageManager = getPackageManager();
List<ApplicationInfo> infos = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo info:infos)
{
if (mIncludeSystemApps && (info.flags & ApplicationInfo.FLAG_SYSTEM) == 1)
{
continue;
}
AppInfo app = new AppInfo();
app.info = info;
app.label = (String) info.loadLabel(packageManager);
apps.add(app);
}
//sort the data
Collections.sort(apps, new DNComparator());
gridView.setAdapter(new AppAdapter(MainActivity.this, apps));
}
@Override
protected void onResume() {
super.onResume();
}
private class DNComparator implements Comparator<AppInfo>
{
@Override
public int compare(AppInfo aa, AppInfo ab) {
CharSequence sa = aa.label;
CharSequence sb = ab.label;
if(sa == null)
{
sa = aa.info.packageName;
}
if(sb == null)
{
sb = ab.info.packageName;
}
return Collator.getInstance().compare(sa.toString() , sb.toString());
}
}
}
package com.example.tad3ti03;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class UploadResultActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload_result);
}
}
<vector android:alpha="0.8" android:height="34dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="30dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M9,16h6v-6h4l-7,-7 -7,7h4zM5,18h14v2L5,20z"/>
</vector>
<vector android:alpha="0.8" android:height="34dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="30dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M20,19.59V8l-6,-6H6c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2H18c0.45,0 0.85,-0.15 1.19,-0.4l-4.43,-4.43c-0.8,0.52 -1.74,0.83 -2.76,0.83 -2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5c0,1.02 -0.31,1.96 -0.83,2.75L20,19.59zM9,13c0,1.66 1.34,3 3,3s3,-1.34 3,-3 -1.34,-3 -3,-3 -3,1.34 -3,3z"/>
</vector>
<vector android:alpha="0.8" android:height="50dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M20,19.59V8l-6,-6H6c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2H18c0.45,0 0.85,-0.15 1.19,-0.4l-4.43,-4.43c-0.8,0.52 -1.74,0.83 -2.76,0.83 -2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5c0,1.02 -0.31,1.96 -0.83,2.75L20,19.59zM9,13c0,1.66 1.34,3 3,3s3,-1.34 3,-3 -1.34,-3 -3,-3 -3,1.34 -3,3z"/>
</vector>
<vector android:alpha="0.8" android:height="104dp"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="100dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6L6,2zM13,9L13,3.5L18.5,9L13,9z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity"> android:gravity="center"
tools:context=".HomeActivity">
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"
android:background="?attr/colorPrimary"
></android.widget.Toolbar>
<Button
android:id="@+id/btn_upload"
android:layout_height="60dp"
android:layout_width="200dp"
android:drawableLeft="@drawable/ic_file_upload_black_24dp"
android:text="Scan My apps"
android:textSize="20sp"
android:textColor="@color/colorText"
android:background="@color/colorPrimary"
android:layout_marginTop="20dp"
android:padding="10dp"
android:layout_centerHorizontal="true"
/>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <Button
android:layout_width="match_parent" android:id="@+id/btn_scan"
android:layout_height="match_parent" android:layout_height="60dp"
android:id="@+id/swipeRefresh" android:layout_width="wrap_content"
> android:drawableLeft="@drawable/ic_file_upload_black_24dp"
android:text="Scan My Phone"
android:textSize="20sp"
android:layout_below="@+id/btn_upload"
android:textColor="@color/colorText"
android:background="@color/colorPrimary"
android:layout_marginTop="20dp"
android:padding="10dp"
android:layout_centerHorizontal="true"
/>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView"></ListView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".ScanActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<GridView
android:id="@+id/griview"
android:numColumns="auto_fit"
android:gravity="center"
android:columnWidth="100dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".UploadResultActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:padding="4dp"
android:layout_height="wrap_content">
<ImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:id="@+id/icon_image"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/titleTextView"
android:textSize="14sp"
android:textStyle="bold"
android:text="App Title"/>
<Space
android:layout_width="4dp"
android:layout_height="0dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1.0"
android:id="@+id/versionId"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/subTitle"
android:textSize="10sp"
android:text="applikasi Tugas Akhir"/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment