アンドロイドのいくつかの方法の総括

4803 ワード

以下はいくつかのアンドロイドでよく見られる注意点で、不定時に更新されます.
1.注意申明
android:sharedUserId="android.uid.system"

2.Manifestの説明を削除すると、apkはインストールアイコンを非表示にします.

    
    
3. Activity startActivity, intent FLAG_ACTIVITY_NEW_TASK flag, AndroidJunit activity, Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. 4.
context.checkCallingOrSelfPermission("android.permission.READ_PHONE_STATE") == PackageManager.PERMISSION_GRANTED
5.raw uri
"android.resource://" + APP context.getPackageName() + "/" + R.raw.  
6. , , :
WindowManager wm = (WindowManager) (borderImageActivity.this.getSystemService(Context.WINDOW_SERVICE));
Point point = new Point();
wm.getDefaultDisplay().getRealSize(point);
int width = point.x;
int height = point.y;

次の2つの方法では、非表示後の最大画面の解像度を取得できません.
1:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metrics.widthPixels;
int height = metrics.heightPixels;

2:
Resources resources = this.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
int width = dm.widthPixels;
int height = dm.heightPixels; 
7. activity ,
android:screenOrientation="landscape"

8.傍受横画面縦画面切り替え、manifestに追加(一度にすべて追加し、1本ずつ追加しないように)
android:configChanges="orientation|keyboard|layoutDirection|screenSize"

次にActivityでonConfigurationChangedメソッドを書き換えます.例は次のとおりです.
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
        Toast.makeText(getApplicationContext(), "  ", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(getApplicationContext(), "  ", Toast.LENGTH_SHORT).show();  
    }
}

9.instrumentationを使用する場合、uiautomatorを使用する必要がある場合、UiDeviceを初期化する場合、adbのコマンドをadb shell am instrument-wに使用する必要があります.-wを加えると、UiDeviceオブジェクトの初期化に成功します.そうしないと、ポインタ異常エラーが発生します.
10.uiautomatorでpython-uiautomatorとAndroid-uiautomatorを併用し、Androidを使用する前に、携帯電話ATXのuiautomatorサービスをオフにします.そうしないと、Android uiautomatorでテストすると、以下のエラーが発生します.
UiAutomationService android.accessibilityservice.IAccessibilityServiceClient$Stub$Proxy@8c48bd6already registered!
11.コントロールとエッジの距離、
  
android:layout_alignParentStart android:layout_marginStart  

12.コードmmを画素に換算
 
  = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM,(float)  ,getResources().getDisplayMetrics());

13.カスタムdialogマスク除去(後部シャドウ)
   dialog.getWindow().setDimAmount(0f);

14.Bitmap設定背景が透明(注意ARGB_8888、565、ピクチャPNGでalphaチャネルを持たないように設定)
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);//       
bitmap.setHasAlpha(true);

15 Bitmap背景を画像に設定
 Drawable drawable=getResources().getDrawable(R.drawable.linecross);
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; bitmap = Bitmap.createBitmap(width,height,config);
canvas = new Canvas(bitmap);
bitmap.setHasAlpha(true);
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);

16.コンパイル後にAPK名を変更する
build.gradleでの構成
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "  .apk"
    }
}

17.TextView設定スライド可能
 TextView.setMovementMethod(ScrollingMovementMethod.getInstance());
18.アンドロイド28中非httpsアクセス
28明文トラフィックのネットワーク要求を制限し、暗号化されていないトラフィック要求はシステムによって禁止される.
だからGETリクエストは
not permitted by network security policy解決方法:
res-xmlにnetwork_のように追加security.xml
                 
そしてmanifestのアプリケーションに
android:networkSecurityConfig="@xml/network_security.xml"
19.アンドロイドの2つのhidlがhalにアクセスする方法
 1.manifestでの構成

false:システムがこのパケットを持たなくてもAPKを実行できることを表し、trueは反対です.
システムが持参したjarパケットにアクセスし、jarパケットが存在するクラスを反射し、jarパケットを介してhalにアクセスします.
2 .工事中に導入するhalコンパイルされたjarパケットは、jarパケットを直接使用してhalにアクセスします.