android 傳送簡訊sendTextMessage()真機執行報錯,退出,在已申請SEND_SMS許可權的情況下Android send SMS not working uid 。。。
最近想做一個自動傳送簡訊獲取密碼的app ,因為大學裡的電信網 要24小時換一次密碼,每次手動發簡訊去要密碼很煩有沒有~~
說明:Android 6.0 之前我們申請許可權直接在配置檔案中配置一下即可,但是6.0之後,
谷歌官方將許可權分為普通許可權和危險許可權。對於危險許可權來說,就需要進行動態設定了。
先說答案,大佬一看就懂的———— 用執行時許可權的申請方法!!! (動態許可權申請,叫慣了執行時許可權。。見怪~)
我的理解:跟android的API 有關,對於SEND_SMS這類危險許可權,要用**執行時許可權**讓使用者授權,然後就能傳送了,這可能是google為了讓使用者擁有更大權利
大佬下面不用看了,不要來笑話我了,然後我開始講故事了。。。
(就是那個好像叫 “閃訊” 的玩意兒。。。)你們可以體會了吧
然後瘋狂找網上的程式碼,大致明白這個android 怎麼呼叫系統的介面直接傳送簡訊了,然後,我的問題就出現——
也就是這一行程式碼實現了傳送簡訊的功能,他執行到真機上之後一直報錯。。。。
smsManager.sendTextMessage(phoneNumber, null, text, sentPI, deliverPI);
大概報錯是這個樣子的:
說明沒有獲取許可權啊,然後我就網上查資料,都說是沒申明許可權。。
,而我已經在manifest裡面聲明瞭許可權:
<uses-permission android:name="android.permission.SEND_SMS"/>
這個android 6.0 宣告這個許可權就行了。
android8.0 的另一臺手機還要一個許可權:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
解決方法:
我想啊,網上都這麼說,到我這兒沒用了,可能是時代發展了的問題,舊時代的方法不適合新時代問題的解決啊。。
然後我就想起了我在學的 《android第一行程式碼》 裡面申請許可權的另一種方式——執行時申請許可權 !!!
查了一下stackoverflow
他所說的api-23 之後的方法不就是 執行時申請許可權嗎,這個東西就是你裝的時候不要許可權,然後用到了再申請的那個,相信大家都碰到過。
也是差不多的意思
然後真的這麼做了 在oncreate裡面檢查:
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.SEND_SMS)!=
PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{
Manifest.permission.SEND_SMS},1);
}
外面一個過載函式,得到使用者是否同意了
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch(requestCode){
case 1:
if(grantResults.length>0&&grantResults[0]!=PackageManager.PERMISSION_GRANTED){
showToast("拒絕許可權將無法使用程式");
finish();
}
break;
default:
break;
}
}
再執行:
然後因為還在測試看看行不行,這裡給 10086 發了個 “查詢餘額” (不要錢的查詢話費用的)
然後他就會自己傳送:
給你們看我少的可憐的話費好了,然後程式碼還在寫的 ,我的想法是讓他 自己 24小時之後發 mm 到那個號碼獲取到密碼,然後在顯示在主介面上, 程式碼我就不放出來了,做好 一定放上來, 持續更新中。。。功成之日即是裝X之時
app是早就做好了,然後陸陸續續有一些事情,之前答應更新的,這個週五的夜晚來還債啊。。
由於這個部落格是解決標題上的問題,我打算新開一篇寫下我做這個App的整個流程
相關推薦
android 傳送簡訊sendTextMessage()真機執行報錯,退出,在已申請SEND_SMS許可權的情況下Android send SMS not working uid 。。。
最近想做一個自動傳送簡訊獲取密碼的app ,因為大學裡的電信網 要24小時換一次密碼,每次手動發簡訊去要密碼很煩有沒有~~ 說明:Android 6.0 之前我們申請許可權直接在配置檔案中配置一下即可,但是6.0之後, 谷歌官方將許可權分為普通許可權和危險許可權。對
【REACT NATIVE 系列教程之十】真機執行報錯COMMAND /BIN/SH FAILED WITH EXIT CODE 1 的解決方法
Himi最近在真機執行遇到 Command /bin/sh failed with exit code 1 的錯誤, 模擬器執行沒有任何問題。此問題已解決,這裡分享下解決方案。先來看下錯誤日誌,如下圖:主要是劃線的部分:1.PhaseScriptExecution Bundle\ React\ Nativ
修改專案APP名字後,在真機執行報錯:The provisioning profile specified in your build settings (“haotian”) has an AppI
錯誤提醒:The provisioning profile specified in your build settings (“haotian”) has an AppID of “com.basecom.vipose” which does not match your
Xcode真機執行報錯linker command failed with exit code 1 (use -v to see invocation)
Xcode8.2.1真機執行報錯linker command failed with exit code 1 (use -v to see invocation),用模擬器執行就不報錯。 解決方法
React Native 真機執行調錯(Android 篇)
跟著官方教程擼完一個電影列表的demo,就想配置到真機上看看效果,這裡列一些遇到的坑。 bug: SDK location not found. 具體的錯誤資訊: Building and instal
cocos2dx 3.12在android studio上從配置到真機執行
官網的配置連結: 好吧,有人肯定說著官網不是有很好的配置文件嗎,照著弄不就好了,要你何用?曾幾何時我也像這麼單純,然後就是各種悲劇,配置過程中出現了不少問題,導致走了很多彎路,這裡主要就是把其中遇到的彎路備份下來,免得下次配置的時候又出現同樣的問題。 首先是Ja
react native for android 真機除錯報錯
鼓搗了一個星期的react native for android ,搭建了一個星期,終於運行了,在虛擬機器上。可是在真機上報錯,後來諮詢了別人說是要調成一樣的IP,還是不會改,在網上各種搜,終於搜到了
關於Android studio連線真機不報錯也沒反應
問題 手機連線上不報錯,電腦顯示連上,studio沒反應;網上說的都試過,沒效果。 解決 進入電腦的裝置管理,顯示android這個裝置是黃色感嘆號,證明驅動有問題,點選詳情是: 目前,這個硬體裝置沒有連線到計算機。 (程式碼 45)
react-native 安卓真機執行報 Execution failed for task ':app:installDebug'.
解決辦法 1.重新啟動usb除錯 2.在AndroidManifest.xml中加 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <us
Xcode 真機除錯報錯:This application's application-identifier entitleme
Xcode 真機除錯報錯:This application's application-identifier entitleme This application's application-identifier entitlement does not matc
Swift專案真機除錯報錯dyld: Library not loaded: @rpath/libswiftCore.dylib
使用Xcode7.3 真機執行 swift 專案的時候報錯: dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /var/containers/Bundle/Application
真機除錯報錯error ==Error Domain=NSURLErrorDomain Code=-1009 "似乎已斷開與網際網路的連線。"
真機除錯報錯error ==Error Domain=NSURLErrorDomain Code=-1009 "似乎已斷開與網際網路的連線。" 請注意,錯誤程式碼是-1009,網上關於網路連結查詢錯誤程式碼的網站很多,查詢一下,會發現 -1009 kCFURLErrorN
react-native 安卓真機執行報 Execution failed for task ':app:installDebug'.
解決辦法 1.重新啟動usb除錯 2.在AndroidManifest.xml中加 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses
DeepIn 微信開發者工具真機除錯報錯提示 Error: node-sync-ipc is broken.
# apt-get install wine // 需要安裝wine, 
Android ——使用AVD模擬器和真機執行Hello World程式(二)
Android——使用AVD模擬器和真機執行Hello World程式(二) 轉自:https://blog.csdn.net/tangjie134/article/details/79495204 在此部分之前我們已經成功安裝了AS3.0,並建立了一個Helloworld工程。 看到這
Android第一天——使用AVD模擬器和真機執行Hello World程式(二)
在此部分之前我們已經成功安裝了AS3.0,並建立了一個Helloworld工程。 看到這樣一段話的同學請直接跳到第2步。 1.解決專案錯誤 在上一期我們建立了HelloWorld專案,但是可能會有部分同學構建出錯,導致專案無法執行,原因可能有很多,在這裡我只
使用AVD模擬器和真機執行Hello World程式(二)
在此部分之前我們已經成功安裝了AS3.0,並建立了一個Helloworld工程。 看到這樣一段話的同學請直接跳到第2步。 1.解決專案錯誤 在上一期我們建立了HelloWorld專案,但是可能會有部分同學構建出錯,導致專案無法執行,原因可能有很多,在這裡我只
寒假無聊 開啟小專案 http伺服器之二傳送http請求(http客戶機)
目錄 說明 實驗環境 建立tcp 連線 程式碼 說明 通過上一篇部落格, 我們基本瞭解了http伺服器的工作流程,首先客戶機和伺服器建立TCP連線 ,連線建立以後,客戶機發出http請求,伺服器做出響應。所以
wampserver 2無法訪問localhost的問題(手機真機測試電腦上的本地網頁)
這個網上有很多解決辦法,WampServer2.2和WampServer2.4都有解決辦法,寫得也還是不錯的那既然已經有寫得不錯的了,按理說我就沒必要再多次一舉,但我為什麼還是要再寫出來呢?因為我按照上面的做了,但是當我在手機上輸入電腦的ip的時候,瀏覽器總是顯示:無法開啟網
iOS 給測試人員測試手機APP的四種方法:真機執行(略),打ipa包,(testFlighe)郵件,蒲公英(一)打ipa包
APP上線前測試,無外乎 一:用資料線真機除錯(以前需要下載真機除錯證書) 二:打.ipa包給測試人員(上限100人) 2.1 打包APP的.ipa 包給測試人員之前,如果沒有新增裝置的UDID號, 先進入蘋果開發者中心(添加了直接跳到2.6) 2.2點