diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 50d3d03b0944d90e7addca44f57e412713c7c0c1..2d4f1bb6dad8336cfd1ed448e108303ed932357f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,10 +12,17 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
+
+
+ android:exported="true" />
diff --git a/app/src/main/java/com/mxdl/customview/MainActivity.java b/app/src/main/java/com/mxdl/customview/MainActivity.java
index 667dd2d10292a1c0f2e5ef07d1968b6a3aeb3f53..85ff929cf314af9f5b282620f559bee845019244 100644
--- a/app/src/main/java/com/mxdl/customview/MainActivity.java
+++ b/app/src/main/java/com/mxdl/customview/MainActivity.java
@@ -1,10 +1,16 @@
package com.mxdl.customview;
+import android.annotation.TargetApi;
import android.app.Service;
import android.content.Intent;
+import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
+
+import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -13,6 +19,11 @@ import android.widget.Button;
import com.mxdl.customview.test.MainTestActivity;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
/**
* Description:
* Author: mxdl
@@ -50,6 +61,18 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
mBtnRectCapture.setOnClickListener(this);
mBtnService.setOnClickListener(this);
+
+
+ }
+
+ @TargetApi(Build.VERSION_CODES.N)
+ public Locale getCurrentLocale() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ return getResources().getConfiguration().getLocales().get(0);
+ } else {
+ //noinspection deprecation
+ return getResources().getConfiguration().locale;
+ }
}
@Override
@@ -75,6 +98,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
break;
case R.id.btn_service:
startActivity(new Intent(this, TestServiceActivity.class));
+
+ Uri uri = Uri.parse("content://com.test.provider");
+ getContentResolver().query(uri,null,null,null,null);
+ getContentResolver().query(uri,null,null,null,null);
+ getContentResolver().query(uri,null,null,null,null);
break;
}
@@ -83,13 +111,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_test,menu);
+ getMenuInflater().inflate(R.menu.menu_test, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if(item.getItemId() == R.id.test){
+ if (item.getItemId() == R.id.test) {
startActivity(new Intent(this, MainTestActivity.class));
}
return super.onOptionsItemSelected(item);
diff --git a/app/src/main/java/com/mxdl/customview/provider/MyContentProvider.java b/app/src/main/java/com/mxdl/customview/provider/MyContentProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d04e289c0bed20ef899a8681f9d9982ffa6bb78
--- /dev/null
+++ b/app/src/main/java/com/mxdl/customview/provider/MyContentProvider.java
@@ -0,0 +1,51 @@
+package com.mxdl.customview.provider;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.util.Log;
+
+public class MyContentProvider extends ContentProvider {
+ public MyContentProvider() {
+ }
+
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
+ // Implement this to handle requests to delete one or more rows.
+ Log.v("MYTAG", "delete");
+ return 0;
+ }
+
+ @Override
+ public String getType(Uri uri) {
+ Log.v("MYTAG", "getType");
+ return null;
+ }
+
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
+ Log.v("MYTAG", "insert...");
+ return null;
+ }
+
+ @Override
+ public boolean onCreate() {
+ Log.v("MYTAG", "onCreate...");
+ Log.v("MYTAG", "currThread:" + Thread.currentThread().getName());
+ return false;
+ }
+
+ @Override
+ public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
+ Log.v("MYTAG", "query...");
+ Log.v("MYTAG", "currThread:" + Thread.currentThread().getName());
+ return null;
+ }
+
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+ Log.v("MYTAG", "update...");
+ return 0;
+ }
+}
diff --git a/app/src/main/java/com/mxdl/customview/uml/ContentProvider.puml b/app/src/main/java/com/mxdl/customview/uml/ContentProvider.puml
new file mode 100644
index 0000000000000000000000000000000000000000..cb59b937debb5590dc111dc347fc55cc29aa95e9
--- /dev/null
+++ b/app/src/main/java/com/mxdl/customview/uml/ContentProvider.puml
@@ -0,0 +1,23 @@
+@startuml
+'ActivityThread.main
+'ActivityThread.attach
+'ActivityManagerService.attachApplication
+'ActivityManagerService.attachApplicationLocked
+'ApplicationThread.bindApplication
+'ActivityThread.handleBindApplication
+'ActivityThread.installContentProviders
+'ActivityThread.installProvider
+'ContentProvider.attachInfo
+'ContentProvider.onCreate
+ActivityThread -> ActivityThread : main
+ActivityThread -> ActivityThread :attach
+ActivityThread -> ActivityManagerService:attachApplication
+ActivityManagerService -> ActivityManagerService:attachApplicationLocked
+ActivityManagerService -> ApplicationThread:bindApplication
+ApplicationThread -> ActivityThread:handleBindApplication
+ActivityThread -> ActivityThread :installContentProviders
+ActivityThread -> ActivityThread :installContentProviders
+ActivityThread -> ActivityThread :installProvider
+ActivityThread -> ContentProvider :attachInfo
+ContentProvider -> ContentProvider :onCreate
+@enduml
\ No newline at end of file
diff --git a/app/src/main/java/com/mxdl/customview/uml/ContentResolver.puml b/app/src/main/java/com/mxdl/customview/uml/ContentResolver.puml
new file mode 100644
index 0000000000000000000000000000000000000000..73c56d4e0904ac65126bc7893cd02012c9408104
--- /dev/null
+++ b/app/src/main/java/com/mxdl/customview/uml/ContentResolver.puml
@@ -0,0 +1,15 @@
+@startuml
+
+'ContentResolver.query
+'ApplicationContentResolver.query
+'ActivityThread.acquireProvider
+'ActivityManagerService.getContentProvider
+'Transport.query
+'ContentProvider.query
+ContextImpl -> ContentResolver :query
+ContentResolver -> ApplicationContentResolver :query
+ApplicationContentResolver -> ActivityThread:acquireProvider
+ActivityThread -> ActivityManagerService:getContentProvider
+ActivityManagerService -> Transport:query
+Transport -> ContentProvider:query
+@enduml
\ No newline at end of file