2018年6月25日 星期一
ZXing 條碼掃描器
安裝ZX條碼器
public void Menu_QRCODE_Click(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
if (getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size() == 0) {
// 未安裝
Toast.makeText(this, "請至 Play 商店安裝 ZXing 條碼掃描器", Toast.LENGTH_LONG).show();
intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://play.google.com/store/apps/details?id=com.google.zxing.client.android"));
startActivity(intent);
} else {
//已安裝
// SCAN_MODE, 可判別所有支援的條碼
// QR_CODE_MODE, 只判別 QRCode
// PRODUCT_MODE, UPC and EAN 碼
// ONE_D_MODE, 1 維條碼
intent.putExtra("SCAN_MODE", "SCAN_MODE");
// 呼叫ZXing Scanner,完成動作後回傳 1 給 onActivityResult 的 requestCode 參數
startActivityForResult(intent, 1);
}
}
// 接收 ZXing 掃描 QRCODE 後回傳來的結果
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Log.d("MenuActivity","ZXing 掃描 QRCODE 後回傳來的結果 進入OK");
// ZXing回傳的內容
final String contents = intent.getStringExtra("SCAN_RESULT");
e_QRCODE.setText(contents);
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "取消掃描", Toast.LENGTH_LONG).show();
}
}
}
2018年6月24日 星期日
SharedPreferences 簡易存取資料
SharedPreferences 簡易存取資料
public void writeValue(){//寫入
SharedPreferences setting=getSharedPreferences(fileName,MODE_PRIVATE);
setting.edit()
.putBoolean("check",cheFix.isChecked()) //Checkbox
.putString("volum",etVolume.getText().toString()) //TextView
.commit();
}
public void readValue(){ //讀
SharedPreferences getting=getSharedPreferences(fileName,MODE_PRIVATE);
cheFix.setChecked(getting.getBoolean("check",false)); //若沒有值預設為 false;
if(cheFix.isChecked()){
Log.d("Debug"," isChecked ");
etVolume.setText(getting.getString("volum",etVolume.getText().toString()));
}else{
Log.d("Debug"," ! isChecked ");
}
}
//利用Activity的生命週期來存取資料
@Override
protected void onStart() {
super.onStart();
readValue();
}
@Override
protected void onStop() {
super.onStop();
writeValue();
}
public void writeValue(){//寫入
SharedPreferences setting=getSharedPreferences(fileName,MODE_PRIVATE);
setting.edit()
.putBoolean("check",cheFix.isChecked()) //Checkbox
.putString("volum",etVolume.getText().toString()) //TextView
.commit();
}
public void readValue(){ //讀
SharedPreferences getting=getSharedPreferences(fileName,MODE_PRIVATE);
cheFix.setChecked(getting.getBoolean("check",false)); //若沒有值預設為 false;
if(cheFix.isChecked()){
Log.d("Debug"," isChecked ");
etVolume.setText(getting.getString("volum",etVolume.getText().toString()));
}else{
Log.d("Debug"," ! isChecked ");
}
}
//利用Activity的生命週期來存取資料
@Override
protected void onStart() {
super.onStart();
readValue();
}
@Override
protected void onStop() {
super.onStop();
writeValue();
}
取得網頁上的字串,UTF8亂碼轉BIG5
//取得網頁上的字串
HttpURLConnection conn=null;
try {
URL httpUri = new URL(url);
conn = (HttpURLConnection) httpUri.openConnection();
conn.setReadTimeout(1500); //设置从主机读取数据超时(单位:毫秒)
conn.setConnectTimeout(1500); //设置连接主机超时(单位:毫秒)
conn.setRequestProperty("Content-Type","UTF-8");
conn.setRequestProperty("Accept", "application/json");
final StringBuffer sb = new StringBuffer();
//若網頁是BIG5,android預設UTF-8 讀下來會出現亂碼,這邊要設置為BIG5解決亂碼
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"BIG5"));
String str;
while((str = reader.readLine()) != null)
{ sb.append(str); }
Log.d("Deubg",sb.toString());
allString =sb.toString();
reader.close();//關閉IO和連結
conn.disconnect();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}finally {
if(conn!=null)
conn.disconnect();
}
EditText隱藏關閉軟鍵盤,觸發軟鍵盤Enter
// 強制隱藏Android輸入法窗口
InputMethodManager imm= (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etCode.getWindowToken(),0);
//--在空白處關閉軟鍵盤
public static Boolean hideInputMethod(Context context, View v) {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
return imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
return false;
}
public static boolean isShouldHideInput(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] leftTop = { 0, 0 };
v.getLocationInWindow(leftTop);
int left = leftTop[0], top = leftTop[1], bottom = top + v.getHeight(), right = left
+ v.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 保留点击EditText的事件
return false;
} else {
return true;
}
}
return false;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
if(hideInputMethod(this, v)) {
return true; //隐藏键盘时,其他控件不响应点击事件==》注释则不拦截点击事件
}
}
}
return super.dispatchTouchEvent(ev);
}
//軟鍵盤 enter 觸發動作
etCode.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
}
});
2018年6月23日 星期六
SmsManager &發送簡訊
int MY_PERMISSION_REQUEST_SEND_SMS = 1;
String SEENT="SMS_SENT";
String DELIVERED="SMS_DELIVERED";
PendingIntent sentPI,deliveredPI;
BroadcastReceiver smsSentReceiver,smsDeliveredReceiver;
final int REQUEST_READ_PHONE_STATE = 1 ;
protected void onCreate(Bundle savedInstanceState) {
String SEENT="SMS_SENT";
String DELIVERED="SMS_DELIVERED";
PendingIntent sentPI,deliveredPI;
BroadcastReceiver smsSentReceiver,smsDeliveredReceiver;
final int REQUEST_READ_PHONE_STATE = 1 ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setContentView(R.layout.activity_main);
sentPI= PendingIntent.getBroadcast(this,0,new Intent(SEENT),0);
deliveredPI= PendingIntent.getBroadcast(this,0,new Intent(DELIVERED),0);
deliveredPI= PendingIntent.getBroadcast(this,0,new Intent(DELIVERED),0);
}
@Override
protected void onResume() {
smsSentReceiver =new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()){
case Activity.RESULT_OK:
Log.d("Debug"," SMS sent");
Toast.makeText(MainActivity.this, "短信发送成功", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Log.d("Debug"," SMS FAILURE");
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Log.d("Debug"," NO _ SERVICE ");
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Log.d("Debug"," NULL _ PDU");
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Log.d("Debug"," RADIO _ OFF");
break;
}
}
};
smsDeliveredReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()){
case Activity.RESULT_OK:
//(供应商已经发送成功,但是对方没有收到)。
Toast.makeText(MainActivity.this, "短信是否被对方收到的状态信息", Toast.LENGTH_SHORT).show();
Log.d("Debug"," SMS Delivere");
break;
case Activity.RESULT_CANCELED:
Log.d("Debug"," SMS not Delivere");
break;
}
}
};
registerReceiver(smsSentReceiver,new IntentFilter(SEENT));
registerReceiver(smsDeliveredReceiver,new IntentFilter(DELIVERED));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(smsDeliveredReceiver);
unregisterReceiver(smsSentReceiver);
}
public void onSend_(View view){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS} , MY_PERMISSION_REQUEST_SEND_SMS);
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_PHONE_STATE}, MY_PERMISSION_REQUEST_SEND_SMS);
}else{
final SmsManager sms=SmsManager.getDefault();
//第一個參數電話號碼,第三個參數簡訊內容
//第一個參數電話號碼,第三個參數簡訊內容
sms.sendTextMessage(number",null,message,sentPI,deliveredPI);
}
}
android.permission.READ_PHONE_STATE权限出现SecurityException异常
發送簡訊使用android.permission.READ_PHONE_STATE权限出现SecurityException异常
READ_PHONE_STATE这个权限在Android6.0(Api 23)及以上的版本,不仅需要在manifest中添加权限,还需要在运行时请求权限。
动态请求权限:
int permissionCheck = ContextCompat.checkSelfPermission(this,Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE},REQUEST_READ_PHONE_STATE);
}
//----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_READ_PHONE_STATE:
if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
//TODO
}
break;
default:
break;
}
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_READ_PHONE_STATE:
if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
//TODO
}
break;
default:
break;
}
}
版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/wuhaibin12/article/details/79946777
訂閱:
文章 (Atom)
-
@Override public void onResponse(Call call, Response response) throws IOException { // final String string = res...
-
//取得網頁上的字串 HttpURLConnection conn=null; try { URL httpUri = new URL(url); conn = (HttpURLConnec...
-
安裝ZX條碼器 public void Menu_QRCODE_Click(View v) { Intent intent = new Intent("com.google.zxing.client.android.SCAN"); ...