檢視APK的簽名的方法
友情提示根據目錄 快速查詢問題
%1$s %1$d Android string
1、整型,比如“我今年23歲了”,這個23是整型的。在string.xml中可以這樣寫,<string name="old">我今年%1$d歲了</string> 在程式中,使用 [java] view plaincopy
- String sAgeFormat = getResources().getString(R.string.old);
- String sFinalAge = String.format(sAgeFormat, 23);
%1$d表達的意思是整個name=”old”中,第一個整型的替代。如果一個name中有兩個需要替換的整型內容,則第二個寫為:%2$d,以此類推;具體程式中替換見下面的string型;
2、string型,比如“我的名字叫李四,我來自首都北京”;這裡的“李四”和“首都北京”都需要替換。
- view sourceprint?1 String sAgeFormatString sAgeFormat1= getResources().getString(R.string.alert);
- String sFinal1 = String.format(sAgeFormat1, "李四","首都北京");
<xliff:g>標籤介紹:
屬性id可以隨便命名
屬性值舉例說明
%n$ms:代表輸出的是字串,n代表是第幾個引數,設定m的值可以在輸出之前放置空格
%n$md:代表輸出的是整數,n代表是第幾個引數,設定m的值可以在輸出之前放置空格,也可以設為0m,在輸出之前放置m個0
%n$mf:代表輸出的是浮點數,n代表是第幾個引數,設定m的值可以控制小數位數,如m=2.2時,輸出格式為00.00
也可簡單寫成:
%d (表示整數)
%f (表示浮點數)
%s (表示字串)
使用步驟舉例:
1.
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
2.
<string name="test_xliff">小紅今年<xliff:g id="xxx">%d</xliff:g>歲了,上<xliff:g id="yyy">%s</xliff:g>年級!</string>
3.
String test = String.format(getResources().getString(R.string.test_xliff), 7, "小學二");
輸出:
小紅今年7歲了,上小學二年級!
瀏覽器中 %3A 代表 : %2F 代表 /
http %3A %2F%2F images.%2F82005team-dcppg01shandianxiawulaibang.jpg
http://images/XXX.jpg
兩個 安卓 原生的控制元件 效果也挺好看的
原生控制元件 swiperefreshlayout 和 progressbar
效果也不錯
佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressbar"
style="@android:style/Widget.ProgressBar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:indeterminate="false"
android:indeterminateDrawable="@drawable/loading"
android:padding="5dp"
android:visibility="invisible" />
</RelativeLayout>
loading.xml:
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="1080.0" >
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="18"
android:useLevel="false" >
<gradient
android:centerColor="#FFDC35"
android:centerY="0.50"
android:endColor="#14CCB2"
android:startColor="#FFFFFF"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
程式碼:
public class MainActivity extends Activity implements OnRefreshListener {
private SwipeRefreshLayout swipe;
private ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mProgressBar = (ProgressBar) findViewById(R.id.progressbar);
swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
swipe.setOnRefreshListener(this);
// 頂部重新整理的樣式
swipe.setColorSchemeResources(android.R.color.holo_red_light,
android.R.color.holo_green_light,
android.R.color.holo_blue_bright,
android.R.color.holo_orange_light);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onRefresh() {
mProgressBar.setVisibility(View.VISIBLE);
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
swipe.setRefreshing(false);
mProgressBar.setVisibility(View.INVISIBLE);
}
});
}
};
timer.schedule(task, 3000);
}
}
浸入狀態列
在 SetcontentView 前面 新增 兩行程式碼,從 sdk 19 以後 才有的效果
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明狀態列
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明導航欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
setContentView(R.layout.activity_main);
LinearLayout ll=new LinearLayout(this);
}
程式碼中設定 TextView 的 drawableleft ,圖片 與文字 之間的 間距問題
findViewById.setText("神");
findViewById.setGravity(Gravity.CENTER_VERTICAL);
//在左側新增圖片
Drawable drawable= getResources().getDrawable(R.drawable.ic_launcher);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
findViewById.setCompoundDrawables(drawable, null, null, null);
// textView.setTextColor(getResources().getColor(R.color.gray_textcolor_shen));
findViewById.setCompoundDrawablePadding(400);//設定圖片和text之間的間距
findViewById.setPadding(-5, 0, 0, 0);
在同一程序的 兩個activity 之間傳遞 bitmap
Intent intent=new Intent();
intent.putExtra("Bitmap", saveBitmap);
Bitmap bitmap = getIntent().getParcelableExtra("Bitmap");
儲存bitmap 到本地
/**
* 儲存bitmap 到本地
* @param path : 絕對路徑
* @param bitmap:bitmap
*/
public static void saveBitmap(String path,Bitmap bitmap)
{
File f = new File(path + System.currentTimeMillis() + ".png");
try {
f.createNewFile();
} catch (IOException e) {
LogUtils.d("在儲存圖片時出錯:"+e.toString());
}
FileOutputStream fOut = null;
try {
fOut = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
try {
fOut.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
-----------------------------------------------------------------------------------------------------------------------
程式碼設定 樣式
// 文字
TextView appNameText=new TextView(UIUtils.getContext());
appNameText.setTextAppearance(UIUtils.getContext(), R.style.ChannelTextStyle);
appNameText.setText(appInfo.title);
如何讓Android下的多行EditText焦點游標預設在第一行 .
只要加上android:gravity="top"就搞定OK了。
在Android開發中如何移除EditText上的輸入焦點 ?
當我們建立一個帶EditText 或 AutoCompleteTextView的檢視時,在載入檢視時總是會把輸入的焦點自動移動到第一個輸入框。如何改成最終效果呢?且看本文詳解。當我們建立一個帶EditText 或 AutoCompleteTextView的檢視時,在載入檢視時總是會把輸入的焦點自動移動到第一個輸入框。如下圖所示:
下面是mail.xml佈局檔案
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text" >
</button>
<edittext
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/hint"
android:text="" >
</edittext>
<button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text" >
</button>
</linearlayout>
我們如何才能把焦點從EditText上移除呢?最簡單的方法是建立一個不可見的(invisible)LinearLayout,LinearLayout將會把焦點從EditText上移走。
我們修改mail.xml佈局檔案,在EditText之前增加一個LinearLayout ,如下所示:
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text" >
</button>
<linearlayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableintouchmode="true" >
<edittext
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/hint"
android:text="" >
</edittext>
<button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text" >
</button>
</linearlayout>
</linearlayout>
最終效果如下所示:
不需要任何程式碼就把焦點移除了,是不是最簡單的解決方案?
Android 禁止軟鍵盤自動彈出
Android系統對EditText這個控制元件有監聽功能,如果某個Activity中含有該控制元件,就會自動彈出軟鍵盤讓你輸入,這個看似人性化的方案有時候並不被使用者喜歡的,所以在有些情況下要禁用該功能。這幾天做的應用也有這個問題,所以就查了,網上大部分都是如下方法:
[html] view plain copy- <activity android:name=".MainActivity"
- android:screenOrientation="landscape"
- android:windowSoftInputMode="adjustPan|stateHidden"
- android:configChanges="orientation|keyboardHidden">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
該方法確實有用,但只是在剛進入此Activity時能起到左右,如果該Activity中有Tab功能的切換,軟鍵盤又會彈出來,所以有了下面這個解決辦法:
在xml檔案中加入一個隱藏的TextView:
[html] view plain copy- <TextView
- android:id="@+id/config_hidden"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:focusable="true"
- android:focusableInTouchMode="true"
- />
然後再在Activity中加入:
[java] view plain copy- TextView config_hidden = (TextView) this.findViewById(R.id.config_hidden);
- config_hidden.requestFocus();
這樣軟鍵盤就不會彈出了。
Android鎖屏狀態下彈出activity,如新版qq的鎖屏訊息提示
在接收訊息廣播的onReceive裡,跳轉到你要顯示的介面。如:- Intent intent = new Intent(arg0,MainActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- arg0.startActivity(intent);
- super.onCreate(savedInstanceState);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
- setContentView(R.layout.activity_main);
設定activity的theme屬性:
- android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
- KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
- KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
- keyguardLock.disableKeyguard();
- <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
java通過生日得到星座
private final static int[] dayArr = new int[] { 20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22 };
private final static String[] constellationArr = new String[] { "摩羯座", "水瓶座", "雙魚座", "白羊座", "金牛座", "雙子座", "巨蟹座", "獅子座", "處女座", "天秤座", "天蠍座", "射手座", "摩羯座" };
public static String getConstellation(int month, int day) {
return day < dayArr[month - 1] ? constellationArr[month - 1] : constellationArr[month];
}
onItemLongClick長點選事件
- gridview.setOnItemLongClickListener(new OnItemLongClickListener() {
-
- @Override
- public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
- int arg2, long arg3) {
- // TODO Auto-generated method stub
- Log.e("setOnItemLongClickListener", "setOnItemLongClickListener");
- return true;
- }
-
-
- });
- gridview.setOnItemClickListener(new OnItemClickListener(){
-
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
- Log.e("setOnItemClickListener", "setOnItemClickListener");
- }
-
- });
在處理長按時,注意的細節是把onItemLongClick返回設定為true,否則長按是會執行setOnItemClickListener。
Android中如何獲取視訊檔案的縮圖
在android中獲取視訊檔案的縮圖有三種方法:
1.從媒體庫中查詢
2. android 2.2以後使用ThumbnailUtils類獲取
3.呼叫jni檔案,實現MediaMetadataRetriever類
三種方法各有利弊
第一種方法,新視訊增加後需要SDCard重新掃描才能給新增加的檔案新增縮圖,靈活性差,而且不是很穩定,適合簡單應用
第二種方法,實現簡單,但2.2以前的版本不支援
第三種方法,實現複雜,但比較靈活,推薦使用
下面給出三種方法的Demo
1.第一種方法:
public static Bitmap getVideoThumbnail(ContentResolver cr, String fileName) { Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inDither = false; options.inPreferredConfig = Bitmap.Config.ARGB_8888; //select condition. String whereClause = MediaStore.Video.Media.DATA + ” = ‘” + fileName + “‘”; Log.v(TAG, “where = ” + whereClause); //colection of results. Cursor cursor = cr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Video.Media._ID }, whereClause, null, null); Log.v(TAG, “cursor = ” + cursor); if (cursor == null || cursor.getCount() == 0) { return null; } cursor.moveToFirst(); //image id in image table. String videoId = cursor.getString(cursor .getColumnIndex(MediaStore.Video.Media._ID)); Log.v(TAG, “videoId = ” + videoId); if (videoId == null) { return null; } cursor.close(); long videoIdLong = Long.parseLong(videoId); //via imageid get the bimap type thumbnail in thumbnail table. bitmap = MediaStore.Video.Thumbnails.getThumbnail(cr, videoIdLong, Images.Thumbnails.MICRO_KIND, options); Log.v(TAG, “bitmap = ” + bitmap); return bitmap; } |
2. 第二種方法:
通過ThumbnailUtils的三種靜態方法。
1. static Bitmap createVideoThumbnail(String filePath, int kind) //獲取視訊檔案的縮圖,第一個引數為視訊檔案的位置,比如/sdcard/android123.3gp,而第二個引數可以為MINI_KIND或 MICRO_KIND最終和解析度有關
2. static Bitmap extractThumbnail(Bitmap source, int width, int height, int options) //直接對Bitmap進行縮略操作,最後一個引數定義為OPTIONS_RECYCLE_INPUT ,來回收資源
3. static Bitmap extractThumbnail(Bitmap source, int width, int height) // 這個和上面的方法一樣,無options選項
3. 第三種方法:
相關推薦
Android檢視apk簽名信息
Android檢視apk簽名信息 把一個App應用程式的apk檔案拿到手後,修改它的檔案字尾名,比如原先的檔名叫做app.apk,把它改成app.zip,然後把它當做一個普通zip壓縮檔案解壓,解壓後得到以下檔案結構: 從META-INF檔案目錄下面,把ANDROID_.RSA(這個就是簽
ionic打包簽名akp(檢視apk簽名)
ionic進行開發完專案後,需要上架。此文是介紹使用命令進行Android端打包與簽名。ios端傳送門:ios打包上架 在Android端,我們需要打包apk,並且簽名然後上傳至各應用商店。 首先是關於apk簽名,Android程式的安裝是以包名(p
檢視apk簽名 和 keystore 的資訊
1、檢視 keystore $ keytool -list -v -keystore debug.keystore $ keytool -list -v -keystore debug.keystore Enter keystore password:
怎麼檢視APK的方法數
網上找的一個指令碼,電腦系統為windows 親測 好用。 將下面兩個檔案printhex.ps1、dex-method-count.bat拷貝到一個資料夾下,檔名字和字尾都不要變,然後將需要檢測的c
檢視apk簽名,檢視key簽名,adb常用命令
在使用第三方sdk時經常要求繫結簽名,這裡提供兩種檢視簽名的方式,如果只是想檢視一下手機上應用的簽名,那麼可以安裝一個app直接輸入包名即可檢視該應用的簽名,提供一個微信的簽名檢視apk,下載連線ht
檢視APK的簽名的方法
友情提示根據目錄 快速查詢問題 %1$s %1$d Android string 1、整型,比如“我今年23歲了”,這個23是整型的。在string.xml中可以這樣寫,<string name="old">我今年%1$d歲了
檢視APK中MD5簽名的方法
每一個安裝到手機裡面的APK都存在一個簽名,以防止惡意冒用。在需要在第三方APP市場釋出應用時,往往需要提供APK的MD5簽名。 下面是檢視簽名的方法: 1,開啟黑視窗,敲入如下命令:jar tf xxx.apk | findstr RSA,列出CERT.RSA所在位置:M
檢視APK包名2種方法
方法1:adb shell "logcat | grep START" 執行該命令,等一小會logcat輸出資訊完畢,然後點選要檢視包名的APP, 我這裡點選的是訊飛輸入法,看到資訊彈出的第一條,com.iflytek.inputmethod 就是訊飛輸入法的包名 09
獲取微信、新浪微博等apk簽名的方法
1、Eclipse開發工具中獲取: 匯出簽名包時的最後一步(將該MD5值複製出來,按照“ 去掉冒號(:),大寫轉小寫 ”的規則裝換,此時字串就是簽名): 2、使用微信或者新浪微博開放平臺上的MD
檢視APK的簽名信息
參考文章 檢視Android應用簽名信息 在windows下開啟命令提示符工具,鍵入命令: keytool -printcert -file xxx.RSA 其中,xxx是apk檔案解壓後,META-INF資料夾下的RSA檔案的名稱。正常情況下是CER
如何檢視apk和簽名檔案的簽名信息
1.通過apktool工具解壓當前apk(比如:demo.apk),解壓後,會生成CERT.RSA檔案 **** apktool d demo.apk 備註:通過這種方式解壓出來的Androidmenifest.xml檔案可以通過檔案編輯器開啟檢視; 2.通過keytool
apk獲取MD5簽名方法
參考連結:http://blog.csdn.net/themelove/article/details/52767528 1.確保安裝了jdk並且正確配置了環境變數。 2.cmd中執行keytool -printcert -jarfile xxx.apk 執行效果
如何檢視apk包的簽名信息,用以驗證是否簽名成功
1、檢視 keystore $ keytool -list -keystore debug.keystore 結果: Keystore type: JKS Keystore provider: SUN Your keystore contains 1 en
android apk 應用 重新簽名 方法
android apk應用重新簽名方法,以及注意事項 1. 生成簽名證書使用JDK自帶的keytool工具, 執行下面的命令 keytool -genkey -alias androidauto.ke
APK簽名原理以及方法
1、簽名機制 Android系統在安裝APK的時候,首先會檢查APK的簽名,如果發現簽名檔案不存在或校驗簽名失敗,則會拒絕安裝,所以應用程式在釋出之前一定要進行簽名,給APK簽名可以帶來以下好處: ①
為IONIC開發的安卓apk簽名
如果 gconf 檢查 validity borde 發的 line 內容 運行 首先進入\platforms\android目錄生成一個keystore文件: keytool -genkey -alias mykey -keyalg RSA -validity 40
阿裏雲視頻 播放獲取簽名方法
ppi 5-0 session ins clas name dom sim addheader public class AccKeyUtilController extends BaseController { public static String REGION
APK簽名說明
自己 想要 ont signapk 關閉 成了 技術 apk簽名 檢查 在 Android 系統下, 一些公司會將自己做的APK進行管控,授權簽名後方可使用。 APK所屬的軟件公司會提供簽名包,例如: 第一步:是要檢查所操作的 PC 機是否安裝 JDK,如
Android中APK簽名工具之jarsigner和apksigner詳解
內容 value signature align light 文件簽名 item als release 一.工具介紹 jarsigner是JDK提供的針對jar包簽名的通用工具, 位於JDK/bin/jarsigner.exe apksigner是Google官方提
cordova app打包apk簽名
首先執行:ionic cordova build android --prod --release,執行完會在以下目錄生成apk檔案( --prod 用以壓縮) 然後使用keytool生成keystore檔案,也就是數字簽名: keytool -genkey -v -keystore my