1. 程式人生 > >檢視APK的簽名的方法

檢視APK的簽名的方法


友情提示根據目錄 快速查詢問題
%1$s %1$d Android string
1、整型,比如“我今年23歲了”,這個23是整型的。在string.xml中可以這樣寫,<string name="old">我今年%1$d歲了</string>  在程式中,使用  [java] view plaincopy
  1. String sAgeFormat = getResources().getString(R.string.old);  
  2. String sFinalAge = String.format(sAgeFormat, 23);  
將%1$d替換為23; 
%1$d表達的意思是整個name=”old”中,第一個整型的替代。如果一個name中有兩個需要替換的整型內容,則第二個寫為:%2$d,以此類推;具體程式中替換見下面的string型; 
2、string型,比如“我的名字叫李四,我來自首都北京”;這裡的“李四”和“首都北京”都需要替換。 
在string.xml中可以這樣寫,<string name="alert">我的名字叫%1$s,我來自%2$s</string>  在程式中:  [java] view plaincopy
  1. view sourceprint?1 String sAgeFormatString sAgeFormat1= getResources().getString(R.string.alert);     
  2.   
  3. String sFinal1 = String.format(sAgeFormat1, "李四","首都北京");   
這裡兩個string需要替換的,按照上面程式的順序依次對應。

<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的檢視時,在載入檢視時總是會把輸入的焦點自動移動到第一個輸入框。如下圖所示:

帶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
  1. <activity android:name=".MainActivity"  
  2.                android:screenOrientation="landscape"  
  3.                android:windowSoftInputMode="adjustPan|stateHidden"  
  4.                android:configChanges="orientation|keyboardHidden">           
  5.                <intent-filter>  
  6.                    <action android:name="android.intent.action.MAIN"/>  
  7.                    <category android:name="android.intent.category.LAUNCHER"/>  
  8.                </intent-filter>         
  9.      </activity>   

該方法確實有用,但只是在剛進入此Activity時能起到左右,如果該Activity中有Tab功能的切換,軟鍵盤又會彈出來,所以有了下面這個解決辦法:

在xml檔案中加入一個隱藏的TextView:

[html]  view plain copy
  1. <TextView  
  2.         android:id="@+id/config_hidden"  
  3.         android:layout_width="wrap_content"  
  4.         android:layout_height="wrap_content"  
  5.         android:focusable="true"  
  6.         android:focusableInTouchMode="true"  
  7.         />  

然後再在Activity中加入:

[java]  view plain copy
  1. TextView config_hidden = (TextView) this.findViewById(R.id.config_hidden);  
[java]  view plain copy
  1. config_hidden.requestFocus();  

這樣軟鍵盤就不會彈出了。


Android鎖屏狀態下彈出activity,如新版qq的鎖屏訊息提示

在接收訊息廣播的onReceive裡,跳轉到你要顯示的介面。如:
  1. Intent intent = new Intent(arg0,MainActivity.class);
  2. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        
  3. arg0.startActivity(intent);
在該activity的onCreate()方法裡:
  1. super.onCreate(savedInstanceState);
  2. getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
  3. setContentView(R.layout.activity_main);

設定activity的theme屬性:
  1. android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
新增點選事件,進入app,突破鎖屏:
  1. KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
  2. KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
  3. keyguardLock.disableKeyguard();
在menifest中加入該許可權:
  1. <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長點選事件

  1.      gridview.setOnItemLongClickListener(new OnItemLongClickListener() {  
  2.   
  3.         @Override  
  4.         public boolean onItemLongClick(AdapterView<?> arg0, View arg1,  
  5.                 int arg2, long arg3) {  
  6.             // TODO Auto-generated method stub  
  7.             Log.e("setOnItemLongClickListener""setOnItemLongClickListener");  
  8.             return true;  
  9.         }  
  10.            
  11.   
  12.       });  
  13.      gridview.setOnItemClickListener(new OnItemClickListener(){  
  14.   
  15. @Override  
  16. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  17.         long arg3) {  
  18.     Log.e("setOnItemClickListener""setOnItemClickListener");  
  19. }  
  20.           
  21.      });  

 

在處理長按時,注意的細節是把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