安卓7.0解決部分勒索軟件問題 安卓7.0包含正義代碼

來源:本網整理

1、首先我們需要在AndroidManifest中的application下添加provider:xml version="1.0"encoding="utf-8?com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.ijuyin.prints.news">com.ijuyin.prints.news.provider" android:exported="false" android:granturipermissions="true">provider>在這里我們需要注意一下其中設置的各種屬性的含義:authorities:是該項目的包名+providergrantUriPermissions:必須是true,表示授予 URI 臨時訪問權限 exported:必須是false resource:中的@xml/file_paths是我們接下來要在資源文件目錄下添加的文件2、在res目錄下新建一個xml文件夾,并且新建一個file_paths的xml文件(如下圖)設置file_path路徑.png3、打開file_paths.xml文件添加如下內容xml version="1.0"encoding="utf-8?com.ijuyin.prints.news/">external-path></external-path></paths>需要注意的是:path:需要臨時授權訪問的路徑(.代表在相機調用時候訪問的是所有路徑,而文件寫入時訪問的路徑是Android/data/com.ijuyin.prints.news/)name:是你為設置的這個訪問路徑起的名字4、接下來便是修改適配Android 7.0及以上系統的代碼第一部分是對于相機模塊的修改Open cameraprivate void showCameraAction(){if(ContextCompat.checkSelfPermission(getContext(),Manifest.permissionWRITE_EXTERNAL_STORAGE)!PackageManager.PERMISSION_GRANTED){requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,getString(R.string.mis_permission_rationale_write_storage),REQUEST_STORAGE_WRITE_ACCESS_PERMISSION);} else {Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if(intent.resolveActivity(getActivity().getPackageManager())!null){try {mTmpFile=FileUtils.createTmpFile(getActivity());} catch(IOException e){e.printStackTrace();}Uri imageUri;if(mTmpFile!null&mTmpFile.exists()){if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){String authority=getActivity().getPackageName()+".provider;imageUri=FileProvider.getUriForFile(getActivity(),authority,mTmpFile);} else {imageUri=Uri.fromFile(mTmpFile);}intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);startActivityForResult(intent,REQUEST_CAMERA);} else {Toast.makeText(getActivity(),R.string.mis_error_image_not_exist,ToastLENGTH_SHORT).show();}} else {Toast.makeText(getActivity(),R.string.mis_msg_no_camera,Toast.LENGTH_SHORT)show();}}}第二部分是對文件寫入模塊的代碼修改private static Handler mHandler=new Handler(){Overridepublic void handleMessage(Message msg){if(msg.what=DOWN_UPDATE){mProgress.setProgress(progress);} else if(msg.what=DOWN_OVER){if(null!downloadDialog&downloadDialog.isShowing()){try {downloadDialog.dismiss();} catch(Exception e){e.printStackTrace();}}File apkfile=new File(apkPath);if!apkfile.exists()){return;}Intent intent=new Intent(Intent.ACTION_VIEW);if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);String authority=mContext.getPackageName()+".provider;Uri contentUri=FileProvider.getUriForFile(mContext,authority,apkfile);intent.setDataAndType(contentUri,"application/vnd.android.package-archive");} else {intent.setDataAndType(Uri.fromFile(apkfile),"application/vnd.android"+.package-archive");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);}mContext.startActivity(intent);}}};其中最核心的部分是配置provider.png需要注意的地方是:首先我們對Android系統的型號做出判斷添加flags,表明我們要被授予什么樣的臨時權限 以前我們直接 Uri.fromFile(apkFile)構建出一個Uri,現在我們使用FileProvider.getUriForFile(getActivity(),getActivity().getPackageName()+".provider",mTmpFile);其中getActivity().getPackageName()指的是該項目的應用包名(此處調用的是在fragment,所以使用的是getActivity())通過以上4步的設置操作,就可以完全解決Android 7.0及以上權限問題導致的崩潰問題。望采納,謝謝www.anxorj.tw防采集請勿采集本網。

s">

安卓7.0解決部分勒索軟件問題 安卓7.0包含正義代碼

作者:佚名 字體:[增加 減小] 來源:IT之家 時間:07-11 08:44:44 我要評論 有一天打開電腦,發現電腦已經被鎖住,窗口彈出說明:如果你不給錢,就把你的電腦清空,這就是遇到了勒索軟件。近年來,這種勒索已經頻頻出現在安卓手機上,手機里的重要資料可能比電腦里還多,這時候怎么辦,真的不得不給它錢?安卓7.0的發布,帶來了正義的守護 ">

有一天打開電腦,發現電腦已經被鎖住,窗口彈出說明:如果你不給錢,就把你的電腦清空,這就是遇到了勒索軟件。近年來,這種勒索已經頻頻出現在安卓手機上,手機里的重要資料可能比電腦里還多,這時候怎么辦,真的不得不給它錢?安卓7.0的發布,帶來了正義的守護。

將 targetSdkVersion 設置到23(不包含)以下。API23對應Android6.0,涉及到動態運行時權限,無權限就會崩潰。

勒索軟件是近年來冒出的比較讓人頭疼的惡意軟件之一,其基本做法是鎖住用戶的文件或是整個設備,然后再向用戶勒索錢財,否則就不會給用戶解鎖,大多數情況下他們往往能夠得逞,畢竟如今手機對于人們的重要性非同一般。

也不是所有。大部分軟件是可以限制權限的,不會造成系統崩潰之類的問題,不過沒什么必要最好不要限制,有可能會使你所限制的軟件打不開,或者是使用過程中接不了電話什么的。歡迎追問

安卓7.0解決部分勒索軟件問題 安卓7.0包含正義代碼

近日安全公司Symantec發現,Android7.0Nougat在一定程度上能夠防范勒索軟件的攻擊。他們發現,安卓7.0對resetPasswordAPI做了一定的修改,至少能夠使部分勒索軟件失效。具體而言,這個修改后的API只能用來設置初始密碼,而不能用來重置密碼,意味著第三方應用是無法重置鎖屏密碼的。

動態設置權限或者 build.gradle里面的targetSdkVersion設置為22,這樣可以簡單粗暴的解決奔潰

安卓7.0解決部分勒索軟件問題 安卓7.0包含正義代碼

但這也意味著那些從來不設密碼的用戶仍然會處在危險之中,因為勒索軟件仍然可以用該API來設置一個初始密碼。另外,一些ROOT后的設備也仍然會處在危險之中。

你好,極少數的手機在刷root的時候會把系統刷崩潰了,還有那個維修人員肯定坑你可以去各大安卓論壇里找找看有沒有你的手機型號論壇然后找找刷機教程(或者救磚教程),然后就可以解決了。希望能幫助到你!

話說自從google出來Android 7.0系統之后,我們公司的測試小伙伴就向我提出了7.0的bug,接下來就著手查閱了下問題是出在哪里的,該如何來解決呢。bug日志是長這樣子的:android.os.FileUriExposedException:file:/storage/emulated/0/ys_toutiao.apk exposed beyond app through Intent.getData()at android.os.StrictMode.onFileUriExposed(StrictMode.java:1816)at android.net.Uri.checkFileUriExposed(Uri.java:2350)at android.content.Intent.prepareToLeaveProcess(Intent.java:9076)at android.content.Intent.prepareToLeaveProcess(Intent.java:9037)at android.app.Instrumentation.execStartActivity(Instrumentation.java:1530)at android.app.Activity.startActivityForResult(Activity.java:4391)at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java)at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java)at android.app.Activity.startActivityForResult(Activity.java:4335)at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java)at android.app.Activity.startActivity(Activity.java:4697)at android.app.Activity.startActivity(Activity.java:4665)atcom.ijuyin.prints.news.utils.VersionUtils$1.handleMessage(VersionUtils.java)at android.os.Handler.dispatchMessage(Handler.java:105)at android.os.Looper.loop(Looper.java:156)at android.app.ActivityThread.main(ActivityThread.java:6524)at java.lang.reflect.Method.invoke(Method.java)atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)也就是說是在什么情況下會出現呢看1、是在調用系統相機的時候;2、是在寫入文件的時候,在我這里是強制升級后下載完成安裝Apk時;關于FileUriExposedException 異常的描述是這樣子的:針對于權限部分,Android7.0是google推出的對權限做了一個更新即不允許出現以file:/的形式調用隱式APP系統,也就是說以前呢,Uri的獲取方式是以file:/xxx的樣式來,那么我們也就是通過Uri.fromFile()來獲取如今放在7.0及以上系統呢,這樣子就不行啦;如今的解決關鍵在哪里呢,需要在應用間共享文件,也就是需要發送一項content:/URI,并授予 URI 臨時訪問權限。進行此授權的最簡單方式是使用FileProvider類。嗯的,FileProvider1、首先我們需要在AndroidManifest中的application下添加provider:xml version="1.0"encoding="utf-8?xmlns:tools="package="com.ijuyin.prints.news">android:name="com.ijuyin.prints.news.base.BaseApplication"android:allowBackup="trueandroid:hardwareAccelerated="trueandroid:icon="@mipmap/ic_launcherandroid:label="@string/text_app_nameandroid:supportsRtl="trueandroid:theme="@style/AppThemetools:replace="android:labelandroid:fullBackupContent="false">android:name="android.support.v4.content.FileProviderandroid:authorities="com.ijuyin.prints.news.provider"android:exported="falseandroid:grantUriPermissions="true">android:name="android.support.FILE_PROVIDER_PATHSandroid:resource="@xml/file_paths"/>在這里我們需要注意一下其中設置的各種屬性的含義:authorities:是該項目的包名+providergrantUriPermissions:必須是true,表示授予 URI 臨時訪問權限exported:必須是falseresource:中的@xml/file_paths是我們接下來要在資源文件目錄下添加的文件2、在res目錄下新建一個xml文件夾,并且新建一個file_paths的xml文件設置file_path路徑.png3、打開file_paths.xml文件添加如下內容xml version="1.0"encoding="utf-8?name="camera_photospath="."/>name="files_rootpath="Android/data/com.ijuyin.prints.news/"/>name="external_storage_rootpath="."/>需要注意的是:path:需要臨時授權訪問的路徑(.代表在相機調用時候訪問的是所有路徑,而文件寫入時訪問的路徑是Android/data/com.ijuyin.prints.news/)name:是你為設置的這個訪問路徑起的名字4、接下來便是修改適配Android 7.0及以上系統的代碼第一部分是對于相機模塊的修改Open cameraprivate void showCameraAction(){if(ContextCompat.checkSelfPermission(getContext(),Manifest.permissionWRITE_EXTERNAL_STORAGE)!PackageManager.PERMISSION_GRANTED){requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,getString(R.string.mis_permission_rationale_write_storage),REQUEST_STORAGE_WRITE_ACCESS_PERMISSION);} else {Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if(intent.resolveActivity(getActivity().getPackageManager())!null){try {mTmpFile=FileUtils.createTmpFile(getActivity());} catch(IOException e){e.printStackTrace();}Uri imageUri;if(mTmpFile!null&mTmpFile.exists()){if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){String authority=getActivity().getPackageName()+".provider;imageUri=FileProvider.getUriForFile(getActivity(),authority,mTmpFile);} else {imageUri=Uri.fromFile(mTmpFile);}intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);startActivityForResult(intent,REQUEST_CAMERA);} else {Toast.makeText(getActivity(),R.string.mis_error_image_not_exist,ToastLENGTH_SHORT).show();}} else {Toast.makeText(getActivity(),R.string.mis_msg_no_camera,Toast.LENGTH_SHORT)show();}}}第二部分是對文件寫入模塊的代碼修改private static Handler mHandler=new Handler(){Overridepublic void handleMessage(Message msg){if(msg.what=DOWN_UPDATE){mProgress.setProgress(progress);} else if(msg.what=DOWN_OVER){if(null!downloadDialog&downloadDialog.isShowing()){try {downloadDialog.dismiss();} catch(Exception e){e.printStackTrace();}}File apkfile=new File(apkPath);if!apkfile.exists()){return;}Intent intent=new Intent(Intent.ACTION_VIEW);if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);String authority=mContext.getPackageName()+".provider;Uri contentUri=FileProvider.getUriForFile(mContext,authority,apkfile);intent.setDataAndType(contentUri,"application/vnd.android.package-archive");} else {intent.setDataAndType(Uri.fromFile(apkfile),"application/vnd.android"+.package-archive");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);}mContext.startActivity(intent);}}};其中最核心的部分是配置provider.png需要注意的地方是:首先我們對Android系統的型號做出判斷添加flags,表明我們要被授予什么樣的臨時權限以前我們直接 Uri.fromFile(apkFile)構建出一個Uri,現在我們使用FileProvider.getUriForFile(getActivity(),getActivity().getPackageName()+".provider",mTmpFile);其中getActivity().getPackageName()指的是該項目的應用包名(此處調用的是在fragment,所以使用的是getActivity())通過以上4步的設置操作,就可以完全解決android 7.0及以上權限問題導致的崩潰問題內容來自www.anxorj.tw請勿采集。

免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
Copyright © 2017 www.anxorj.tw All Rights Reserved
陕西快乐10分下载