Android App跨应用访问其他App的resource和assets资源

发布时间:2026/8/1 15:17:34
Android App跨应用访问其他App的resource和assets资源 有些统一的资源放在统一的一个app中其他app使用同样的素材资源部分厂商有这样的需求。这时候就需要用到Android App跨应用访问其他App的resource和assets资源的能力。建议添加此权限来避免跨app的可见性问题。下面提供了两个方法getDemoBResources和getDemoBAssets来跨应用访问resource/drawable资源, resource/string资源以及assets文件夹下的文件。packagecom.example.test;importandroid.app.Activity;importandroid.content.ComponentName;importandroid.content.Context;importandroid.content.Intent;importandroid.content.ServiceConnection;importandroid.content.pm.PackageManager;importandroid.content.res.AssetManager;importandroid.content.res.Resources;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Color;importandroid.graphics.drawable.Drawable;importandroid.hardware.display.DisplayManager;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.IBinder;importandroid.os.Looper;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.FrameLayout;importandroid.widget.ImageView;importcom.example.test.coretest.DemoManager;importcom.mercedes.component.drawable.FlashBorderDrawable;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importmercedes.core.MBCore;publicclassMainActivityextendsActivity{privateButtonbutton;privateintcount1;privateFrameLayoutframeLayout;OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);buttonfindViewById(R.id.btn);button.setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(Viewv){Log.d(test111,onClick:);getDemoBResources();}});findViewById(R.id.btn2).setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(Viewv){Log.d(test111,onClick:);getDemoBAssets();}});}StringpackageNamecom.example.resourceshare;privatevoidgetDemoBResources(){try{ContexttargetContextcreatePackageContext(packageName,Context.CONTEXT_IGNORE_SECURITY);ResourcesrestargetContext.getResources();// get String:intresIdres.getIdentifier(app_name,string,packageName);Stringvalueres.getString(resId);Log.d(test111_resourceshare,packageName_app_name is:value);EditTexteditTextfindViewById(R.id.et);editText.setText(app_name is:value);// get drawableintdrawableIdres.getIdentifier(drawable_from_resource_share,drawable,packageName);Drawabledrawableres.getDrawable(drawableId,null);ImageViewimageViewfindViewById(R.id.image_view);imageView.setImageDrawable(drawable);}catch(PackageManager.NameNotFoundExceptione){thrownewRuntimeException(e);}}privatevoidgetDemoBAssets(){try{ContexttargetContextcreatePackageContext(packageName,Context.CONTEXT_IGNORE_SECURITY);AssetManagerassetstargetContext.getAssets();// read assets/config.jsonInputStreamisassets.open(steeringwheel.png);BitmapbitmapBitmapFactory.decodeStream(is);ImageViewimageViewfindViewById(R.id.image_view2);imageView.setImageBitmap(bitmap);}catch(PackageManager.NameNotFoundExceptione){thrownewRuntimeException(e);}catch(IOExceptione){thrownewRuntimeException(e);}}}-------------------------------------------------------End Line--------------------------------------------------------